home *** CD-ROM | disk | FTP | other *** search
Wrap
$m131072 ' ' The HOUSE QUEST I - The search for the lost amtmann ' ' Version 2.03 vom 10.03.1992 ' ' Written by Christian Becker ' ' mit: BUUUM 1D - Adventure-Game-Interpreter ' ' Version 1.00 vom 01.02.1992 ' ' Geschrieben von Christian Becker ' ' Freeware (fw) 1989-1992 by MEGAVENTURES ' ap_id&=APPL_INIT() ! UNSAUBER IF ap_id&=0 acc!=FALSE ELSE acc!=TRUE ENDIF ' ON ERROR GOSUB errhand ' DIM wup!(16) ARRAYFILL wup!(),FALSE wupdex%=0 ' sperr ' IF acc! me_id&=MENU_REGISTER(ap_id&," House Quest I") ELSE RESERVE 131072 ENDIF ' aeshandle&=GRAF_HANDLE(x%,y%,x2%,y2%) ' DEFMOUSE 0 ' vdihandle&=@open_vworkstation(aeshandle&) IF vdihandle&=0 GOSUB inst_err("Fehler beim Öffnen der virtuellen Workstation.") ENDIF V~H=vdihandle& ' GOSUB res_init ' GOSUB init_window ' frei ' IF acc!=TRUE menbar!=FALSE ELSE menbar!=TRUE feh%=RSRC_LOAD("HQ1.RSC") IF feh%=0 PRINT "Fehler beim Laden der Resourcedatei!" PRINT "Menüzeile kann nicht benutzt werden." PRINT "Bitte eine Taste drücken ..." ~INP(2) menbar!=FALSE ELSE ' LET tree1&=0 LET tree2&=1 LET info&=7 LET ende&=16 LET load&=17 LET save&=18 LET rsave&=20 LET rload&=21 LET neus&=23 LET version&=4 LET fertig&=10 ~RSRC_GADDR(0,tree1&,adr1%) ~RSRC_GADDR(0,tree2&,adr2%) ' ~MENU_BAR(adr1%,1) ENDIF ENDIF ' GOSUB adv_init IF NOT acc! GOSUB rs_load ENDIF ' IF NOT acc! handle&=@open_window(bx%,by%,4079," House Quest I ","",8,16,8,16) m4&=handle& offset(0,0) ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) GOSUB clrscr GOSUB clear_events GOSUB intro offset(0,0) ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) ENDIF ' ' *** Hauptprogramm *** ' main: ' alt_raum&=-1 ' DO DO ' IF NOT reset! ret%=EVNT_MULTI(&X10010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),127,mx%,my%,mk%,i%,key%,t%) ELSE ret%=0 ENDIF ' IF (ret% AND &X10000)=&X10000 ' Mitteilung GOSUB window_handling ENDIF ' IF reset! ret%=0 GOSUB force_wred ENDIF IF (NOT ontop!) AND (NOT reset!) GOSUB spc_events ENDIF ' ' IF (ret% AND &X10)=&X10 ' Maus-Ereignis ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) IF mx%>=fx& AND my%>=fy& AND mx%<fx&+fw& AND my%<fy&+fh& notmaus ' IF NOT reset! ' fs!=TRUE GOSUB eingabe ' go!=FALSE GOSUB parser(in$,vk&,nom&,pr&,nom2&) GOSUB check_parser(vk&,nom&,pr&,nom2&) ' INC zug& ' ENDIF ' ENDIF ENDIF LOOP ' LOOP ' ' **** Window-Routinen **** ' >>>> WINDOS V3.0 <<<< ' ' Window-kontroll-Block ' ' Array : Windowhandle als Index ' wx&,wy& : linke,obere Ecke des Gesamtbildes ' wb&,wh& : maximale Breite/Höhe ' we& : Elemente ' wo! : Window offen? ' ws_sx,ws_sy : Stepbreiten für Seiten ' ws_zx,ws_zy : Stepbreiten für Zeilen ' wmx,wmy,wmb,wmh : Speicher für FullW ' PROCEDURE calc_slider(handle&) LOCAL fx&,fy&,fw&,fh&,len&,pos& ~WIND_GET(handle&,4,fx&,fy&,fw&,fh&) ' IF BTST(we&(handle&),8) len&=1000/wb&(handle&)*fw& ~WIND_SET(handle&,15,len&,0,0,0) pos&=1000/(wb&(handle&)-fw&+1)*wx&(handle&) ~WIND_SET(handle&,8,pos&,0,0,0) ENDIF ' IF BTST(we&(handle&),11) len&=1000/wh&(handle&)*fh& ~WIND_SET(handle&,16,len&,0,0,0) pos&=1000/(wh&(handle&)-fh&+1)*wy&(handle&) ~WIND_SET(handle&,9,pos&,0,0,0) ENDIF RETURN ' PROCEDURE init_window maxwin&=16 DIM wx&(maxwin&),wy&(maxwin&),wh&(maxwin&),wb&(maxwin&) DIM wmx&(maxwin&),wmy&(maxwin&),wmh&(maxwin&),wmb&(maxwin&) DIM ws_sx&(maxwin&) DIM ws_sy&(maxwin&) DIM ws_zx&(maxwin&) DIM ws_zy&(maxwin&) DIM wo!(maxwin&),we&(maxwin&) ' ARRAYFILL wo!(),FALSE LET name&=1 LET close&=2 full&=4 move&=8 info&=16 size&=32 uparrow&=64 dnarrow&=128 vslide&=256 lfarrow&=512 rtarrow&=1024 hslide&=2048 ' RETURN ' FUNCTION open_window(maxw&,maxh&,element%,t$,i$,sx%,sy%,zx%,zy%) LOCAL x&,y&,b&,h&,handle&,adr% ' ~WIND_GET(0,4,x&,y&,b&,h&) ' ~WIND_CALC(1,element%,x&,y&,b&,h&,x2&,y2&,b2&,h2&) ' ~WIND_CALC(0,element%,x2&,y2&,b2&,h2&,x&,y&,b&,h&) ' handle&=WIND_CREATE(element%,x&,y&,b&,h&) IF handle&<=0 inst_err("Kein Fenster mehr frei.") ENDIF IF handle&>maxwin& inst_err("Windowhandle im ungültigen Bereich.") ENDIF ' we&(handle&)=element% wo!(handle&)=TRUE wx&(handle&)=0 wy&(handle&)=0 wb&(handle&)=maxw& wh&(handle&)=maxh& ' ws_sx&(handle&)=sx% ws_sy&(handle&)=sy% ws_zx&(handle&)=zx% ws_zy&(handle&)=zy% ' IF BTST(element%,0) adr%=titel%+80*handle& CHAR{adr%}=t$ ~WIND_SET(handle&,2,CARD(SWAP(adr%)),CARD(adr%),0,0) ENDIF IF BTST(element%,4) adr%=info%+80*handle& CHAR{adr%}=i$ ~WIND_SET(handle&,3,CARD(SWAP(adr%)),CARD(adr%),0,0) ENDIF ' ~WIND_CALC(1,element%,x&,y&,b&,h&,x2&,y2&,b2&,h2&) b2&=MIN(b2&,maxw&) h2&=MIN(h2&,maxh&) ~WIND_CALC(0,element%,x2&,y2&,b2&,h2&,x&,y&,b&,h&) ' wmx&(handle&)=x& wmy&(handle&)=y& wmb&(handle&)=b& wmh&(handle&)=h& ' ~WIND_OPEN(handle&,x&,y&,b&,h&) calc_slider(handle&) ' RETURN handle& ENDFUNC ' PROCEDURE set_offset(handle&) LOCAL fx&,fy&,fw&,fh& ~WIND_GET(handle&,4,fx&,fy&,fw&,fh&) offset(0,0) IF NOT w_red! CLIP fx&,fy&,fw&,fh& ENDIF offset(fx&-wx&(handle&),fy&-wy&(handle&)) RETURN ' PROCEDURE so SUB wy&(m4&),ws_sy&(m4&) wy&(m4&)=MAX(wy&(m4&),0) RETURN ' PROCEDURE su ADD wy&(m4&),ws_sy&(m4&) wy&(m4&)=MIN(wy&(m4&),wh&(m4&)-fh&-1) RETURN ' PROCEDURE sl SUB wx&(m4&),ws_sx&(m4&) wx&(m4&)=MAX(wx&(m4&),0) RETURN ' PROCEDURE sr ADD wx&(m4&),ws_sx&(m4&) wx&(m4&)=MIN(wx&(m4&),wb&(m4&)-fw&-1) RETURN ' PROCEDURE zo LOCAL rets% rets%=ws_zy&(m4&) IF wy&(m4&)<rets% rets%=wy&(m4&) ENDIF IF wy&(m4&)>0 sm%(0)=0 dm%(0)=0 p%(0)=fx& p%(1)=fy& p%(2)=fx&+fw&-1 p%(3)=fy&+fh&-rets%-1 p%(4)=fx& p%(5)=fy&+rets% p%(6)=fx&+fw&-1 p%(7)=fy&+fh&-1 p%(8)=3 BITBLT sm%(),dm%(),p%() fh&=rets% SUB wy&(m4&),rets% ENDIF wy&(m4&)=MAX(wy&(m4&),0) RETURN ' PROCEDURE zu LOCAL retl%,rets% retl%=fh& rets%=ws_zy&(m4&) IF wh&(m4&)-(wy&(m4&)+fh&-1)<rets% rets%=wh&(m4&)-(wy&(m4&)+fh&-1) ENDIF IF wy&(m4&)<wh&(m4&)-fh&-1 sm%(0)=0 dm%(0)=0 p%(0)=fx& p%(1)=fy&+rets% p%(2)=fx&+fw&-1 p%(3)=fy&+fh&-1 p%(4)=fx& p%(5)=fy& p%(6)=fx&+fw&-1 p%(7)=fy&+fh&-rets%-1 p%(8)=3 BITBLT sm%(),dm%(),p%() fy&=fy&+fh&-rets% fh&=rets% ADD wy&(m4&),rets% ENDIF wy&(m4&)=MIN(wy&(m4&),wh&(m4&)-retl%-1) RETURN ' PROCEDURE zl LOCAL rets% rets%=ws_zx&(m4&) IF wx&(m4&)<rets% rets%=wx&(m4&) ENDIF IF wx&(m4&)>0 sm%(0)=0 dm%(0)=0 p%(0)=fx& p%(1)=fy& p%(2)=fx&+fw&-rets%-1 p%(3)=fy&+fh&-1 p%(4)=fx&+rets% p%(5)=fy& p%(6)=fx&+fw&-1 p%(7)=fy&+fh&-1 p%(8)=3 BITBLT sm%(),dm%(),p%() fw&=rets% SUB wx&(m4&),rets% ENDIF wx&(m4&)=MAX(wx&(m4&),0) RETURN ' PROCEDURE zr LOCAL retl%,rets% retl%=fw& rets%=ws_zx&(m4&) IF wb&(m4&)-(wx&(m4&)+fw&-1)<rets% rets%=wb&(m4&)-(wx&(m4&)+fw&-1) ENDIF IF wx&(m4&)<wb&(m4&)-fw&-1 sm%(0)=0 dm%(0)=0 p%(0)=fx&+rets% p%(1)=fy& p%(2)=fx&+fw&-1 p%(3)=fy&+fh&-1 p%(4)=fx& p%(5)=fy& p%(6)=fx&+fw&-rets%-1 p%(7)=fy&+fh&-1 p%(8)=3 BITBLT sm%(),dm%(),p%() fx&=fx&+fw&-rets% fw&=rets% ADD wx&(m4&),rets% ENDIF wx&(m4&)=MIN(wx&(m4&),wb&(m4&)-retl%-1) RETURN ' PROCEDURE do_redraw(handle&,x&,y&,w&,h&) LOCAL ax&,ay&,aw&,ah&,t2_gx&,t2_gy&,t2_gw&,t2_gh&,flag! ' w_red!=TRUE sperr DEFMOUSE 2 t2_gx&=x& t2_gy&=y& t2_gw&=w& t2_gh&=h& ~WIND_GET(handle&,4,fx&,fy&,fw&,fh&) ~WIND_GET(handle&,11,t1_gx&,t1_gy&,t1_gw&,t1_gh&) WHILE t1_gw&<>0 AND t1_gh&<>0 ax&=t1_gx& ay&=t1_gy& aw&=t1_gw& ah&=t1_gh& flag!=RC_INTERSECT(t2_gx&,t2_gy&,t2_gw&,t2_gh&,ax&,ay&,aw&,ah&) IF flag!=TRUE offset(0,0) CLIP ax&,ay&,aw&,ah& DEFFILL 0,1,0 wpbox(ax&,ay&,ax&+aw&,ay&+ah&) ' offset(fx&-wx&(handle&),fy&-wy&(handle&)) GOSUB draw_window ' ENDIF ' ~WIND_GET(handle&,12,t1_gx&,t1_gy&,t1_gw&,t1_gh&) WEND ' DEFMOUSE 0 frei w_red!=FALSE RETURN ' PROCEDURE window_handling LOCAL ox&,oy&,ow&,oh&,t% SELECT m1& CASE 40 handle&=@open_window(bx%,by%,4079," House Quest I ","",8,16,8,16) m4&=handle& ' GOSUB clrscr ' GOSUB intro ' GOSUB warm_start offset(0,0) ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) CASE 41 GOSUB beenden CASE 10 IF m5&=info& sperr ' ~FORM_CENTER(adr2%,ox&,oy&,ow&,oh&) ~FORM_DIAL(0,0,0,0,0,ox&,oy&,ow&,oh&) ~FORM_DIAL(1,0,0,0,0,ox&,oy&,ow&,oh&) ' ~OBJC_DRAW(adr2%,0,8,ox&,oy&,ow&,oh&) ' ~FORM_DO(adr2%,0) ' ~FORM_DIAL(2,0,0,0,0,ox&,oy&,ow&,oh&) ~FORM_DIAL(3,0,0,0,0,ox&,oy&,ow&,oh&) OB_STATE(adr2%,fertig&)=0 frei ELSE IF m5&=save& GOSUB save ELSE IF m5&=rsave& GOSUB ramsave ELSE IF m5&=load& GOSUB load ELSE IF m5&=rload& GOSUB ramload ELSE IF m5&=ende& ALERT 2,"Willst du wirklich schließen |und den Genuß von |'The House Quest I ' |beenden?",1," JA |NEIN",t% IF t%=1 GOSUB beenden ENDIF ELSE IF m5&=neus& ALERT 2,"Willst du wirklich |neustarten? |",2," JA |NEIN",t% IF t%=1 GOSUB warm_start reset!=TRUE ENDIF ENDIF ~MENU_TNORMAL(adr1%,m4&,1) CASE 23 ! Fullwd ~WIND_GET(m4&,5,fx&,fy&,fw&,fh&) SWAP fx&,wmx&(m4&) SWAP fy&,wmy&(m4&) SWAP fw&,wmb&(m4&) SWAP fh&,wmh&(m4&) ~WIND_SET(m4&,5,fx&,fy&,fw&,fh&) SWAP fx&,wmx&(m4&) SWAP fy&,wmy&(m4&) SWAP fw&,wmb&(m4&) SWAP fh&,wmh&(m4&) wx&(m4&)=0 wy&(m4&)=0 GOSUB calc_slider(m4&) ' IF fx&=wmx&(m4&) IF fy&=wmy&(m4&) IF fw&=wmb&(m4&) IF fh&=wmh&(m4&) GOSUB force_wred ENDIF ENDIF ENDIF ENDIF ' CASE 24 ! Pfeile ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) CLIP fx&,fy&,fw&,fh& ON m5&+1 GOSUB so,su,zo,zu,sl,sr,zl,zr GOSUB set_offset(m4&) GOSUB do_redraw(m4&,fx&,fy&,fw&,fh&) GOSUB calc_slider(m4&) CASE 25 ! hor.Schieber ~WIND_SET(m4&,8,m5&,0,0,0) ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) wx&(m4&)=(wb&(m4&)-fw&)/1000*m5& GOSUB calc_slider(m4&) GOSUB do_redraw(m4&,fx&,fy&,fw&,fh&) CASE 26 ! vert.Schieber ~WIND_SET(m4&,9,m5&,0,0,0) ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) wy&(m4&)=(wh&(m4&)-fh&)/1000*m5& GOSUB calc_slider(m4&) GOSUB do_redraw(m4&,fx&,fy&,fw&,fh&) CASE 22 ' close ALERT 2,"Willst du wirklich schließen |und den Genuß von |'The House Quest I ' |beenden?",1," JA |NEIN",t% IF t%=1 GOSUB beenden ENDIF CASE 20 ' Redraw GOSUB do_redraw(m4&,m5&,m6&,m7&,m8&) CASE 21,29 ' Topped ~WIND_SET(m4&,10,0,0,0,0) CASE 28 ' Move m5&=MIN(m5&,mpx%-m7&-1) m6&=MIN(m6&,mpy%-m8&-1) ~WIND_SET(m4&,5,m5&,m6&,m7&,m8&) CASE 27 ' Sizer ~WIND_CALC(1,we&(m4&),m5&,m6&,m7&,m8&,x2&,y2&,b2&,h2&) b2&=MIN(wb&(m4&),wx&(m4&)+b2&) h2&=MIN(wh&(m4&),wy&(m4&)+h2&) SUB b2&,wx&(m4&) SUB h2&,wy&(m4&) b2&=MAX(b2&,256) h2&=MAX(h2&,160) ~WIND_CALC(0,we&(m4&),x2&,y2&,b2&,h2&,m5&,m6&,m7&,m8&) ' ~WIND_SET(m4&,5,m5&,m6&,m7&,m8&) calc_slider(m4&) ENDSELECT RETURN ' PROCEDURE redraw LOCAL status%,mx%,my%,mk%,ret%,i%,t% status%=FALSE REPEAT ret%=EVNT_MULTI(&X110000,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),256,mx%,my%,mk%,i%,key%,t%) ' IF (ret% AND &X10000)=&X10000 ' Mitteilung GOSUB window_handling ENDIF ' UNTIL (ret% AND &X100000)=&X100000 RETURN ' PROCEDURE draw_window LOCAL t%,rstil%,z$ rstil%=stil% IF ontop! SWAP ex%,s_ex% SWAP ey%,s_ey% SWAP bx%,s_bx% SWAP by%,s_by% SWAP cx%,s_cx% SWAP cy%,s_cy% ENDIF ' reset!=FALSE ' IF no_redraw!=FALSE IF alt_raum&<>raum& GOSUB clrscr ENDIF alt_raum&=raum& ' IF licht!=TRUE DEC brenn& ENDIF ' GOSUB statusline ' IF fl!(16) deftxt(1,1,0,fntgr%) print_xy(-60,invf%,"Countdown:"+STR$(buum%)+" ") deftxt(1,0,0,fntgr%) DEC buum% ENDIF ' dunkel!=FALSE licht!=TRUE ' IF fl!(9)=FALSE SELECT raum& CASE 28,29,30 dunkel!=TRUE licht!=FALSE ENDSELECT ENDIF ' IF fl!(10)=FALSE SELECT raum& CASE 15 TO 27 dunkel!=TRUE licht!=FALSE ENDSELECT ENDIF ' IF fl!(11)=FALSE SELECT raum& CASE 2 TO 15 dunkel!=TRUE licht!=FALSE ENDSELECT ENDIF ' IF fl!(12)=FALSE SELECT raum& CASE 33 TO 40 dunkel!=TRUE licht!=FALSE ENDSELECT ENDIF ' IF NOT reset! IF dunkel!=TRUE AND licht!=FALSE DEFFILL 1,1,0 wpbox(0,0,bx%-1,by%-1) GOSUB print_my(2,"Es ist so stockeduster, so daß du nichts erkennen kannst.") ELSE deftxt(1,1,0,fntgr%) GOSUB print_xy(0,2,@get_short_raum$(raum&)) deftxt(1,0,0,fntgr%) GOSUB printw(3,@get_raum_des$(raum&),FALSE) GOSUB print_xy(0,objf%,@print_richtung$(raum&)) GOSUB print_xy(0,objf%+1,SPACE$(75)) deftxt(1,1,0,fntgr%) GOSUB print_xy(0,-(objf%+1),@print_objekts$(raum&)) deftxt(1,0,0,fntgr%) ENDIF ' IF NOT reset! GOSUB draw_verbs in$="" bef$="" o1$="" o2$="" pr$="" GOSUB show_eingabe ENDIF ENDIF ENDIF GOSUB show_eingabe IF ontop! SWAP ex%,s_ex% SWAP ey%,s_ey% SWAP bx%,s_bx% SWAP by%,s_by% SWAP cx%,s_cx% SWAP cy%,s_cy% ' DEFFILL 0,1,0 wprbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2) DEFLINE 1,3,0,0 wrbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2) DEFLINE 1,1,0,0 COLOR 0 wrbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2) COLOR 1 FOR t%=0 TO DIM?(r_top$())-1 z$=r_top$(t%) IF z$<>"" deftxt(1,ASC(LEFT$(z$)),0,fntgr%) IF ASC(MID$(z$,2,1))=0 print_redxy(0,t%,MID$(z$,3)) ELSE print_redmy(t%,MID$(z$,3)) ENDIF ENDIF NEXT t% ENDIF deftxt(1,rstil%,0,fntgr%) RETURN ' ' **** Parser **** ' PROCEDURE check_parser(vk_&,nom_&,pr_&,nom2_&) raus!=FALSE IF vk_&<>-255 AND nom_&=-255 topic("Sprich bitte in vollständigen Sätzen, sonst ist eine einwandfreie Kommunikation nicht gewährleistet!") ELSE IF vk_&=-255 topic("Das Verb "+vok$+" ist nicht in meinem Wortschatz!") raus!=TRUE ENDIF IF nom_&=-255 topic("Das Nomen "+nom$+" ist mir unbekannt!") raus!=TRUE ENDIF IF nom2_&=-255 topic("Von dem Nomen "+nom2$+" habe ich noch nie gehört!") raus!=TRUE ENDIF IF pr_&=-255 topic("Das Wort "+pr$+" erscheint mir dubios!") raus!=TRUE ENDIF IF raus!<>TRUE GOSUB interpreter ENDIF ENDIF RETURN ' PROCEDURE parser(ps_$,VAR vk_&,nom_&,pr_&,nom2_&) ' PARSER SPAS V0.12 ' written in 1988/92 by CB for PPI vk_&=-1 nom_&=-1 pr_&=-1 nom2&=-1 pos&=0 FOR t&=1 TO LEN(ps_$) IF MID$(ps_$,t&,1)=" " INC pos& ENDIF NEXT t& gefv!=FALSE gefn!=FALSE gefp!=FALSE gefn2!=FALSE SELECT pos& CASE 0 vok$=ps_$ GOSUB search_vok(ps_$) CASE 1 pos1&=INSTR(ps_$," ") vok$=MID$(ps_$,1,pos1&-1) nom$=MID$(ps_$,pos1&+1) GOSUB search_vok(vok$) GOSUB search_nom(nom$) CASE 2 pos1&=INSTR(ps_$," ") pos2&=RINSTR(ps_$," ") vok$=MID$(ps_$,1,pos1&-1) nom$=MID$(ps_$,pos1&+1,pos2&-pos1&-1) pr$=MID$(ps_$,pos2&+1) GOSUB search_vok(vok$) GOSUB search_nom(nom$) GOSUB search_pr(pr$) CASE 3 pos1&=INSTR(ps_$," ") pos2&=RINSTR(ps_$," ") vok$=MID$(ps_$,1,pos1&-1) b$=MID$(ps_$,pos1&+1,pos2&-pos1&-1) nom2$=MID$(ps_$,pos2&+1) pos&=INSTR(b$," ") nom$=MID$(b$,1,pos&-1) pr$=MID$(b$,pos&+1) GOSUB search_nom2(nom2$) GOSUB search_vok(vok$) GOSUB search_nom(nom$) GOSUB search_pr(pr$) ENDSELECT IF gefv!=0 AND vk_&<>-1 vk_&=-255 ENDIF IF gefn!=0 AND nom_&<>-1 nom_&=-255 ENDIF IF gefn2!=0 AND nom2_&<>-1 nom2_&=-255 ENDIF IF gefp!=0 AND pr_&<>-1 pr_&=-255 ENDIF RETURN ' PROCEDURE search_vok(a$) vk_&=0 FOR t&=0 TO maxv& IF UPPER$(a$)=UPPER$(vk$(t&)) gefv!=TRUE vk_&=t& ENDIF NEXT t& RETURN ' PROCEDURE search_nom(a$) nom_&=0 FOR t&=0 TO maxn& IF UPPER$(a$)=UPPER$(nom$(t&)) gefn!=TRUE nom_&=t& ENDIF NEXT t& RETURN ' PROCEDURE search_nom2(a$) nom2_&=0 FOR t&=0 TO maxn& IF UPPER$(a$)=UPPER$(nom$(t&)) gefn2!=TRUE nom2_&=t& ENDIF NEXT t& RETURN ' PROCEDURE search_pr(a$) pr_&=0 FOR t&=0 TO maxp& IF UPPER$(a$)=UPPER$(pr$(t&)) gefp!=TRUE pr_&=t& ENDIF NEXT t& RETURN ' PROCEDURE check_nom IF nom&=-1 open_top print_my(4,"Du mußt dich schon etwas genauer ausdrücken.") close_top ERROR 100 ENDIF RETURN ' ' **** Service-Routinen **** ' PROCEDURE errhand ON ERROR GOSUB errhand ' GOSUB frei ' IF ontop! ontop!=FALSE ex%=s_ex% ey%=s_ey% bx%=s_bx% by%=s_by% cx%=s_cx% cy%=s_cy% ENDIF DEFMOUSE 0 IF ERR<>100 open_top print_csf(" FEHLER --- ERROR --- MISTHARKE --- AUSWURF ") print_cs(" ") print_csf("Oh Jeojeh .........................") print_cs(" ") print_cs(" ") print_cs(" ") print_cs(" ") print_cs(" ") print_cs(" ") print_cs(" ") print_cs(" ") print_cs(" ") print_cs(" ") print_csf("Es ist der Fehler Nummer "+STR$(ERR)+" aufgetreten!") print_csf("Im Klartext zum Mitschreiben : ") print_csf(@get_klar_err$(ERR)) print_cs(" ") ALERT 2," Wat nu (Wang lu) ? ",1,"Abbruch|Weiter",t% IF t%=1 GOSUB beenden ENDIF ENDIF IF ontop! ontop!=FALSE ex%=s_ex% ey%=s_ey% bx%=s_bx% by%=s_by% cx%=s_cx% cy%=s_cy% ENDIF reset!=TRUE RESUME main RETURN ' FUNCTION get_klar_err$(num%) LOCAL a$,len% a$=MID$(ERR$(num%),5) len%=INSTR(a$,"]")-1 a$=MID$(a$,1,len%) FOR len%=1 TO LEN(a$) IF MID$(a$,len%,1)="|" MID$(a$,len%,1)="," ENDIF NEXT len% RETURN a$ ENDFUNC ' PROCEDURE beenden IF acc! ~WIND_CLOSE(handle&) ~WIND_DELETE(handle&) handle&=-1 m4&=-1 ELSE GOSUB rs_save GOSUB gdos_exit IF menbar! ~MENU_BAR(adr1%,0) ~RSRC_FREE() ENDIF ~MFREE(scrbuf%) close_vworkstation(vdihandle&) V~H=-1 RESERVE ON ERROR ~APPL_EXIT() END ENDIF RETURN ' ' **** Adventure-Treiber **** ' >>>> BUUUM V1.0 <<<< ' PROCEDURE io_ein IF menbar! ~MENU_IENABLE(adr1%,save&,1) ~MENU_IENABLE(adr1%,load&,1) ~MENU_IENABLE(adr1%,rsave&,1) ~MENU_IENABLE(adr1%,rload&,1) ~MENU_IENABLE(adr1%,neus&,1) ENDIF RETURN ' PROCEDURE io_aus IF menbar! ~MENU_IENABLE(adr1%,save&,0) ~MENU_IENABLE(adr1%,load&,0) ~MENU_IENABLE(adr1%,rsave&,0) ~MENU_IENABLE(adr1%,rload&,0) ~MENU_IENABLE(adr1%,neus&,0) ENDIF RETURN ' PROCEDURE intro GOSUB io_aus ontop!=TRUE no_redraw!=TRUE GOSUB gdos_init GOSUB vorspann IF BIOS(11,-1)=0 GOSUB ges ENDIF no_redraw!=FALSE ontop!=FALSE GOSUB io_ein GOSUB force_wred RETURN ' PROCEDURE draw_verbs LOCAL t%,x%,y% ' sv_sx%=sx% ' IF GDOS? AND prop! vx%=80/5 sx%=8 ELSE vx%=(bx%/sx%)/5 ENDIF ' vy%=maxv&/5+1 ' FOR t%=0 TO maxv& y%=t%/5 x%=(t%-5*y%)*vx% GOSUB print_xy(-x%,y%+verbf%,vk$(t%)) NEXT t% IF inv$<>@get_inv$ invz%=0 inv$=@get_inv$ ENDIF t%=LEN(inv$) IF t%>0 GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20)) GOSUB print_xy(-40,invf%,"<") GOSUB print_xy(-50,invf%,">") ENDIF sx%=sv_sx% RETURN ' PROCEDURE eingabe LOCAL raus!,a$,i%,t%,x%,y%,k% raus!=FALSE ' bef$="" o1$="" o2$="" pr$="" GOSUB show_eingabe ' IF inv$<>@get_inv$ invz%=0 inv$=@get_inv$ ENDIF t%=LEN(inv$) IF t%>0 GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20)) GOSUB print_xy(-40,invf%,"<") GOSUB print_xy(-50,invf%,">") ENDIF ' sv_sx%=sx% ' IF GDOS? AND prop! sx%=8 ENDIF ' in$="" status%=0 ' REPEAT IF fs!=TRUE x%=mx%-fx&+wx&(m4&) y%=my%-fy&+wy&(m4&) fs!=FALSE ELSE maus_w(x%,y%,k%) ENDIF ' SUB x%,ex% SUB y%,ey% ' x%=x%/sx% y%=y%/sy% ' IF y%=inpf% IF in$<>"" raus!=TRUE ENDIF ENDIF ' bug!=FALSE IF y%=invf% AND status%>0 AND LEN(inv$)>0 IF x%=40 AND invz%>0 DEC invz% GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20)) ENDIF IF x%=50 AND invz%<LEN(inv$)/20-1 INC invz% GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20)) ENDIF IF x%>10 AND x%<30 IF status%<>3 status%=2 o1$=TRIM$(MID$(inv$,1+20*invz%,20)) ELSE o2$=TRIM$(MID$(inv$,1+20*invz%,20)) ENDIF show_eingabe ENDIF notmaus_w bug!=TRUE ENDIF ' IF y%=invf% AND LEN(inv$)>0 AND bug!=FALSE IF x%=40 AND invz%>0 DEC invz% GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20)) ENDIF IF x%=50 AND invz%<LEN(inv$)/20-1 INC invz% GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20)) ENDIF notmaus_w ENDIF ' IF y%>=verbf% AND y%<=verbf%+4 SUB y%,verbf% x%=x%/vx% IF y%*5+x%<=maxv& bef$=vk$(y%*5+x%) ENDIF status%=1 o1$="" o2$="" pr$="" show_eingabe ENDIF ' IF y%=objf%+1 AND status%>0 AND status%<=2 SUB y%,objf%+1 x%=x%+1 status%=2 a$=@print_objekts$(raum&) ' IF x%>17 AND x%<LEN(a$) i%=x% komma!=FALSE WHILE i%>15 AND NOT komma! IF MID$(a$,i%,1)="," komma!=TRUE ENDIF DEC i% WEND ' t%=x% komma!=FALSE WHILE t%<LEN(a$) AND NOT komma! IF MID$(a$,t%,1)="," komma!=TRUE ENDIF INC t% WEND ' IF t%=LEN(a$) o1$=MID$(a$,i%+3) ELSE IF t%-i%-4>0 o1$=MID$(a$,i%+3,t%-i%-4) ENDIF ENDIF show_eingabe ENDIF ENDIF ' IF status%=2 IF UPPER$(bef$)="ÖFFNE" pr$="mit" status%=3 show_eingabe ENDIF IF UPPER$(bef$)="GIB" pr$="an" status%=3 show_eingabe ENDIF ENDIF ' IF status%=1 IF UPPER$(bef$)="GEHE" pr$="zu:" show_eingabe ENDIF IF UPPER$(bef$)="SPRECHE" pr$="mit" show_eingabe ENDIF IF UPPER$(bef$)="SETZE" pr$="auf" show_eingabe ENDIF ENDIF ' IF y%=objf%+1 AND status%=3 SUB y%,objf%+1 x%=x%+1 status%=4 a$=@print_objekts$(raum&) ' IF x%>17 AND x%<LEN(a$) i%=x% komma!=FALSE WHILE i%>15 AND NOT komma! IF MID$(a$,i%,1)="," komma!=TRUE ENDIF DEC i% WEND ' t%=x% komma!=FALSE WHILE t%<LEN(a$) AND NOT komma! IF MID$(a$,t%,1)="," komma!=TRUE ENDIF INC t% WEND ' IF t%=LEN(a$) o2$=MID$(a$,i%+3) ELSE IF t%-i%-4>0 o2$=MID$(a$,i%+3,t%-i%-4) ELSE status%=3 ENDIF ENDIF show_eingabe ENDIF ENDIF ' PAUSE 10 UNTIL raus! GOSUB print_xy(0,inpf%," ") in$=TRIM$(in$) sx%=sv_sx% RETURN ' PROCEDURE show_eingabe GOSUB print_xy(0,inpf%," ") deftxt(1,1,0,fntgr%) in$=bef$+" "+o1$+" "+pr$+" "+o2$ IF UPPER$(bef$)="GEHE" OR UPPER$(bef$)="SPRECHE" GOSUB print_xy(0,inpf%,bef$+" "+pr$+" "+o1$) ELSE GOSUB print_xy(0,inpf%,in$) ENDIF deftxt(1,0,0,fntgr%) RETURN ' FUNCTION get_crc LOCAL sum%,t% sum%=0 FOR t%=0 TO DIM?(ob&())-1 ADD sum%,ob&(t%) NEXT t% RETURN sum% ENDFUNC ' PROCEDURE interpreter LOCAL retraum&,x%,y%,checksum% retraum&=raum& checksum%=@get_crc IF vk&<6 IF v&(raum&,vk&+1)<0 ON ABS(v&(raum&,vk&+1)) GOSUB zf,abg,luft_sturz ELSE IF v&(raum&,vk&+1)=0 z%=RANDOM(3) SELECT z% CASE 0 topic("In diese Richtung führt kein Weg!") CASE 1 topic("Boing !!!") CASE 2 topic("Da geht's nicht long!") DEFAULT topic("Selbst DEIN Holzkopf kommt DA nicht durch!") ENDSELECT ' ELSE ' IF dunkel! AND NOT licht! IF lastraum&<>v&(raum&,vk&+1) topic("Als du weitergehst, stolperst du leider in der Dunkelheit.") GOSUB tod("Du bist über deine Füße gestolpert (zu Tode versteht sich).") ENDIF ENDIF ' IF NOT reset! lastraum&=raum& raum&=v&(raum&,vk&+1) go!=TRUE ENDIF ENDIF ENDIF ENDIF SELECT vk& CASE 6 ALERT 2,"Willst du wirklich |neustarten? |",2," JA |NEIN",t% IF t%=1 GOSUB warm_start ENDIF CASE 7 GOSUB inv CASE 9 GOSUB save CASE 8 GOSUB load CASE 10 GOSUB ramsave CASE 11 GOSUB ramload ENDSELECT IF vk&>11 SUB vk&,11 ON vk& GOSUB betr,unter,geh,nimm,lege,spr,set,gib,versp,spl,off,schalt,wwi ENDIF IF retraum&<>raum& GOSUB force_wred ELSE IF checksum%<>@get_crc GOSUB set_offset(m4&) GOSUB print_xy(0,objf%+1,SPACE$(75)) deftxt(1,1,0,fntgr%) GOSUB print_xy(0,-(objf%+1),@print_objekts$(raum&)) deftxt(1,0,0,fntgr%) ENDIF GOSUB statusline IF fl!(16) deftxt(1,1,0,fntgr%) print_xy(-60,invf%,"Countdown:"+STR$(buum%)+" ") deftxt(1,0,0,fntgr%) ENDIF ENDIF RETURN ' ' I/O-Routinen ' PROCEDURE save clear_events a$=CHR$(GEMDOS(25)+65)+":\*.adv" FILESELECT #"Spiel auf Disk bannen",a$,"",file$ IF file$<>"" IF RIGHT$(file$,4)<>".ADV" file$=file$+".adv" ENDIF ' sperr IF EXIST(file$) ALERT 2,"Hoppalahopp! |Der Spielstand ist schon da!|Überschreiben?",2," JA |NEIN",t% IF t%=2 file$="" ALERT 1,"Spielstandspeichern |abgebrochen!",1," OK ",t% ENDIF ENDIF ' IF file$<>"" DEFMOUSE 2 OPEN "O",#1,file$ WRITE #1,"HQ1-004" WRITE #1,score& WRITE #1,raum& WRITE #1,lastraum& WRITE #1,kagg% WRITE #1,stufe% WRITE #1,buum% FOR t&=0 TO maxn& WRITE #1,ob&(t&) NEXT t& FOR t&=0 TO maxflag& WRITE #1,fl!(t&) NEXT t& FOR t&=0 TO maxsf% WRITE #1,sf!(t&) NEXT t& WRITE #1,v&(16,3) WRITE #1,v&(15,3) WRITE #1,v&(27,1) WRITE #1,v&(34,3) WRITE #1,v&(41,5) WRITE #1,zug& CLOSE #1 DEFMOUSE 0 topic("Spielstand ist gebannt.") ENDIF frei ENDIF RETURN ' PROCEDURE ramsave LOCAL t% ALERT 2,"Spielstand wirklich |ins RAM packen? | ",1," Jo |Nöö",t% IF t%=1 gilti!=TRUE s_score&=score& s_raum&=raum& s_lastraum&=lastraum& s_kagg%=kagg% s_stufe%=stufe% s_buum%=buum% FOR t&=0 TO maxn& s_ob&(t&)=ob&(t&) NEXT t& FOR t&=0 TO maxflag& s_fl!(t&)=fl!(t&) NEXT t& FOR t&=0 TO maxsf% s_sf!(t&)=sf!(t&) NEXT t& s_1&=v&(16,3) s_2&=v&(15,3) s_3&=v&(27,1) s_4&=v&(34,3) s_5&=v&(41,5) s_6&=zug& ENDIF RETURN ' PROCEDURE rs_save IF s_raum&>0 sperr file$="ramsave.adv" clear_events DEFMOUSE 2 OPEN "O",#1,file$ WRITE #1,"HQ1-004" WRITE #1,s_score& WRITE #1,s_raum& WRITE #1,s_lastraum& WRITE #1,s_kagg% WRITE #1,s_stufe% WRITE #1,s_buum% FOR t&=0 TO maxn& WRITE #1,s_ob&(t&) NEXT t& FOR t&=0 TO maxflag& WRITE #1,s_fl!(t&) NEXT t& FOR t&=0 TO maxsf% WRITE #1,s_sf!(t&) NEXT t& WRITE #1,s_1& WRITE #1,s_2& WRITE #1,s_3& WRITE #1,s_4& WRITE #1,s_5& WRITE #1,s_6& CLOSE #1 DEFMOUSE 0 frei ENDIF RETURN ' PROCEDURE rs_load LOCAL t% sperr file$="ramsave.adv" IF EXIST(file$) ' OPEN "I",#1,file$ DEFMOUSE 2 INPUT #1,a$ IF a$="HQ1-004" INPUT #1,s_score& INPUT #1,s_raum& INPUT #1,s_lastraum& INPUT #1,s_kagg% INPUT #1,s_stufe% INPUT #1,s_buum% FOR t&=0 TO maxn& INPUT #1,s_ob&(t&) NEXT t& FOR t&=0 TO maxflag& INPUT #1,s_fl!(t&) NEXT t& FOR t&=0 TO maxsf% INPUT #1,s_sf!(t&) NEXT t& INPUT #1,s_1& INPUT #1,s_2& INPUT #1,s_3& INPUT #1,s_4& INPUT #1,s_5& INPUT #1,s_6& alt_raum&=-1 gilti!=TRUE ENDIF DEFMOUSE 0 CLOSE #1 ENDIF frei RETURN ' PROCEDURE ramload LOCAL t% IF gilti! ALERT 2,"Spielstand wirklich aus |den Eingeweiden holen? | ",1,"Bitte|Danke",t% IF t%=1 score&=s_score& raum&=s_raum& lastraum&=raum& kagg%=s_kagg% stufe%=s_stufe% buum%=s_buum% FOR t&=0 TO maxn& ob&(t&)=s_ob&(t&) NEXT t& FOR t&=0 TO maxflag& fl!(t&)=s_fl!(t&) NEXT t& FOR t&=0 TO maxsf% sf!(t&)=s_sf!(t&) NEXT t& v&(16,3)=s_1& v&(15,3)=s_2& v&(27,1)=s_3& v&(34,3)=s_4& v&(41,5)=s_5& zug&=s_6& alt_raum&=-1 force_wred ENDIF ELSE topic("Wenn nichts in seinen rostigen Eingeweiden (= RAM-Speicher des Computers) ist, kann ich folglich auch nichts aus diesen holen.") ENDIF RETURN ' PROCEDURE load clear_events a$=CHR$(GEMDOS(25)+65)+":\*.adv" FILESELECT #"Spiel von Disk entbannen",a$,"",file$ IF file$<>"" sperr DEFMOUSE 2 OPEN "I",#1,file$ INPUT #1,k$ IF k$<>"HQ1-004" DEFMOUSE 0 topic("Dieser Spielstand stammt von einem anderen Programm. Kram mal die richtige Datei raus!") alt_raum&=-1 ELSE INPUT #1,score& INPUT #1,raum& INPUT #1,lastraum& INPUT #1,kagg% INPUT #1,stufe% INPUT #1,buum% FOR t&=0 TO maxn& INPUT #1,ob&(t&) NEXT t& FOR t&=0 TO maxflag& INPUT #1,fl!(t&) NEXT t& FOR t&=0 TO maxsf% INPUT #1,sf!(t&) NEXT t& INPUT #1,v&(16,3) INPUT #1,v&(15,3) INPUT #1,v&(27,1) INPUT #1,v&(34,3) INPUT #1,v&(41,5) INPUT #1,zug& DEFMOUSE 0 clear_events topic("Spielstand ist entbannt.") ENDIF CLOSE #1 frei ENDIF RETURN ' PROCEDURE inv LOCAL y%,gef!,t& GOSUB open_top gef!=FALSE deftxt(1,4,0,fntgr%) print_xy(0,0,"Momentan in den Sackleinen : ") deftxt(1,0,0,fntgr%) y%=2 FOR t&=0 TO maxn& IF ob&(t&)=-1 print_xy(0,y%,nom$(t&)) INC y% gef!=TRUE ENDIF NEXT t& IF gef!=FALSE print_xy(0,2,"nüscht") ENDIF GOSUB close_top RETURN ' FUNCTION get_inv$ LOCAL a$,b$,t& a$="" gef!=FALSE FOR t&=0 TO maxn& IF ob&(t&)=-1 b$=SPACE$(20) LSET b$=nom$(t&) a$=a$+b$ gef!=TRUE ENDIF NEXT t& RETURN a$ ENDFUNC ' PROCEDURE statusline LOCAL a$ GOSUB print_xy(0,0,"Zuch : "+STR$(zug&)) a$="Pkt. :"+STR$(score&)+" von "+STR$(maxscore&) GOSUB print_pxy((bx%-LEN(a$)*sx%)/2,0,a$) IF NOT (GDOS? AND prop!) GOSUB print_pxy(bx%-LEN(noa$)*sx%-sx%,0,noa$) ENDIF RETURN ' PROCEDURE wfk deftxt(1,4,0,fntgr%) print_my(by%/sy%-2,"Patsch auf die Maus ...") deftxt(1,0,0,fntgr%) GOSUB mausklick_w RETURN ' PROCEDURE dos(num%,zahl%) IF sf!(num%)=FALSE ADD score&,zahl% sf!(num%)=TRUE ENDIF RETURN ' PROCEDURE tod(a$) LOCAL len%,b$,c$ GOSUB clrscr IF GDOS? AND prop! ~VQT_EXTENT("†",x1%,y1%,x2%,y2%,x3%,y3%,x4%,y4%) len%=(x2%-x1%) b$=STRING$(bx%/len%,"†") ELSE b$=STRING$(bx%/sx%,"†") ENDIF FOR x%=0 TO by%/sy% print_xy(0,x%,b$) NEXT x% cy%=3 GOSUB print_csf(">>> Es ist leider (?!?) passiert .... <<<") ADD cy%,1 GOSUB print_csf("Beim "+STR$(zug&)+". Zug (Spielstand von "+STR$(score&)+":"+STR$(maxscore&)+")") ADD cy%,9 GOSUB print_csf(" DU BIST (mause) TOT !!!") ADD cy%,1 a$="| "+a$+" |" c$=STRING$(LEN(a$),"-") MID$(c$,1,1)="/" MID$(c$,LEN(a$),1)="\" GOSUB print_csf(c$) GOSUB print_csf(a$) MID$(c$,1,1)="\" MID$(c$,LEN(a$),1)="/" GOSUB print_csf(c$) ALERT 2," Willst du nochmal ? | ",1," JA |NEIN",t% IF t%=1 warm_start ELSE GOSUB beenden ENDIF RETURN ' PROCEDURE adv_init LOCAL t& noa$="House Quest I" ' no_redraw!=FALSE gilti!=FALSE w_red!=FALSE ' DIM r_top$(32) GOSUB clear_tops ' score&=0 RESTORE adv_dat READ maxscore& zug&=0 ' READ maxraum&,maxflag&,raum&,maxsf%,maxobj& DIM r$(maxraum&),v&(maxraum&,6),fl!(maxflag&),s_fl!(maxflag&),sf!(maxsf%) DIM s_sf!(maxsf%),o$(maxobj&),md!(15) ARRAYFILL sf!(),FALSE ARRAYFILL fl!(),FALSE ARRAYFILL md!(),TRUE ' fl!(10)=TRUE fl!(11)=TRUE fl!(12)=TRUE ' RESTORE raum FOR t&=1 TO maxraum& a$="" REPEAT READ a$ IF a$<>"#R" r$(t&)=r$(t&)+a$ ENDIF UNTIL a$="#R" NEXT t& ' RESTORE objtext FOR t&=0 TO maxobj& a$="" REPEAT READ a$ IF a$<>"#R" o$(t&)=o$(t&)+a$ ENDIF UNTIL a$="#R" NEXT t& ' RESTORE link FOR t&=1 TO maxraum& FOR i&=1 TO 6 READ v&(t&,i&) NEXT i& NEXT t& ' RESTORE ps_data READ maxv&,maxn&,maxp& DIM ob&(maxn&),s_ob&(maxn&) DIM vk$(maxv&),nom$(maxn&),pr$(maxp&) RESTORE ps_vk FOR t&=0 TO maxv& READ vk$(t&) NEXT t& RESTORE ps_nom FOR t&=0 TO maxn& READ nom$(t&) NEXT t& RESTORE ps_pr FOR t&=0 TO maxp& READ pr$(t&) pr$(t&)=UPPER$(pr$(t&)) NEXT t& RESTORE status FOR t&=0 TO maxn& READ ob&(t&) NEXT t& ' textf%=0 objf%=(by%/2+16)/sy%-1 inpf%=objf%+3-1 verbf%=inpf%+1 IF fntgr%=6 invf%=inpf%+6 ELSE invf%=inpf%+7 ENDIF ' RETURN ' PROCEDURE warm_start LOCAL t& score&=0 RESTORE adv_dat READ maxscore& zug&=0 reset!=TRUE ' READ maxraum&,maxflag&,raum&,maxsf%,maxobj& ARRAYFILL sf!(),FALSE ARRAYFILL fl!(),FALSE ARRAYFILL md!(),TRUE ' fl!(10)=TRUE fl!(11)=TRUE fl!(12)=TRUE ' RESTORE link FOR t&=1 TO maxraum& FOR i&=1 TO 6 READ v&(t&,i&) NEXT i& NEXT t& ' RESTORE status FOR t&=0 TO maxn& READ ob&(t&) NEXT t& ' alt_raum&=-1 lastraum&=-1 ' kagg%=0 stufe%=0 ' cx%=0 cy%=0 ' ex%=0 ey%=0 s_cx%=0 s_cy%=0 ' s_ex%=0 s_ey%=0 ' bx%=78*sx% by%=22*sy% s_bx%=bx% s_by%=by% ' deftxt(1,0,0,fntgr%) RETURN ' PROCEDURE do_warm ON ERROR GOSUB errhand RESUME main RETURN ' FUNCTION get_short_raum$(num&) LOCAL a$,t& RESTORE short_name FOR t&=1 TO num& READ a$ NEXT t& RETURN a$ ENDFUNC ' FUNCTION print_objekts$(num&) LOCAL gef!,t&,sum$ gef!=FALSE sum$="In deinem Blick: " FOR t&=0 TO maxn& IF ob&(t&)=num& sum$=sum$+nom$(t&)+", " gef!=TRUE ENDIF NEXT t& IF gef!=TRUE RETURN MID$(sum$,1,LEN(sum$)-2) ELSE RETURN sum$+"r.g.n (==> rein gar nichts)" ENDIF ENDFUNC ' bw: DATA Norden,Süden,Westen,Ostern,Oben,Unten ' FUNCTION print_richtung$(num&) LOCAL gef!,sum$,a$,t& gef!=FALSE RESTORE bw sum$="Mögliche Wege : " FOR t&=1 TO 6 READ a$ IF v&(num&,t&)<>0 sum$=sum$+a$+", " gef!=TRUE ENDIF NEXT t& IF gef!=TRUE RETURN MID$(sum$,1,LEN(sum$)-2) ELSE RETURN sum$+"Keine" ENDIF ENDFUNC ' FUNCTION get_raum_des$(t%) LOCAL a$,b$,c$,index% a$=r$(t%) b$="" index%=1 REPEAT c$=MID$(a$,index%,1) IF c$="#" c$=MID$(a$,index%+1,1) SELECT c$ CASE "C" index%=index%+2 b$=b$+CHR$(13) CASE "V" index%=index%+3 fl1%=VAL(MID$(a$,index%,3)) fl2%=VAL(MID$(a$,index%+4,2)) ADD index%,7 REPEAT c$=MID$(a$,index%,1) IF fl!(fl1%)=fl2% AND c$<>"]" b$=b$+c$ ENDIF INC index% UNTIL c$="]" ENDSELECT DEC index% ELSE b$=b$+c$ ENDIF INC index% UNTIL index%>LEN(a$) RETURN b$ ENDFUNC ' PROCEDURE check_flag(t&,a$,num%,zahl%) IF fl!(t&)=TRUE topic("In Dortmund, ähh ... in Ordnung!") ob&(nom&)=-1 dos(num%,zahl%) ELSE topic(a$) ENDIF RETURN ' PROCEDURE wwi LOCAL a$,z% a$="Das Wort zum Dienstag :/" z%=RANDOM(32766) MOD 15 SELECT z% CASE 0 a$=a$+"Du meinst, daß das jetzt gut war! Nicht wahr? Träum' weiter." CASE 1 a$=a$+"Au weia! So kommst du nicht in 100 Jahren zur Lösung." CASE 2 a$=a$+"Tzisses! Du bist von der Lösung so weit entfernt, wie Max von'ne Möhren." CASE 3 a$=a$+"Ja nur weiter so, die nächste Falltür kommt bestimmt!" CASE 4 a$=a$+"Nein, das war jetzt ganz kalt, um nicht zu sagen EISkalt." CASE 5 a$=a$+"Ich nehme an, das ist dein erstes Adventure. Na dann kann ich deinen Bockmist verstehen, den du mit diesem Zug verzapft hast." CASE 6 a$=a$+"Das tut weh. Neio, neio !" CASE 7 a$=a$+"Lasses sein. Du kommst so eh nicht weiter." CASE 8 a$=a$+"Das war gar nicht mal so übel, sprach der Dübel und verschwand in der Wand unerkannt. Aber das ist etwas völlig anderes." CASE 9 a$=a$+"Mit deinen 'Spielzügen' hast du den Rechner so gründlich verwirrt, daß ein Absturz wohl nicht mehr lange auf sich warten läßt." CASE 10 a$=a$+"Nein, ich will es nicht wissen, nein, nein,nein. Ich will nicht wissen, wo du das Adventuren gelernt bzw. nicht gelernt hast." CASE 11 a$=a$+"Diesen Spielzug kann man leider nicht mehr mit gut bewerten, er war MISERABEL." CASE 12 a$=a$+"Das war MUELL." CASE 13 a$=a$+" Das war doch Emmenthaler, mit extra großen Löchern und Fettstufe 12." CASE 14 a$=a$+"'Au weia', sprach der alte Häuptling der Indianer. Ich kann mich da nur anschließen." DEFAULT a$=a$+"Kein Kommentar!" ENDSELECT topic(a$) RETURN ' PROCEDURE inst_err(a$) PRINT PRINT "Bei der Initialsierung ist folgender Fehler aufgetreten :" PRINT PRINT a$ PRINT PRINT "Das Programm kann leider nicht gestartet werden." PRINT IF acc! DO ~EVNT_MESAG(0) LOOP ELSE PRINT "Bitte eine beliebige Taste drücken ......." ~INP(2) END ENDIF RETURN ' PROCEDURE gigo LOCAL z% z%=RANDOM(32010) MOD 6 SELECT z% CASE 0 topic("Bitte ???") CASE 1 topic("Das ist doch wohl völliger Schwachsinn!") CASE 2 topic(" ??? ") CASE 3 topic("Das ist L(Bl)öt(d)z(s)inn!") CASE 4 topic("Das war ja wohl müllmäßiger MUELL!") DEFAULT topic("Das findest du jetzt gut, was ???") ENDSELECT RETURN ' ' **** Reaktions-Routinen **** ' >>>> HQ1 <<<< ' PROCEDURE betr IF dunkel! AND NOT licht! topic("Du kannst die Augen vor der Hand nicht sehen.") ELSE IF nom&=-1 GOSUB topic("Was soll ich denn betrachten, häää...") ELSE IF ob&(nom&)=0 OR (ob&(nom&)<>raum& AND ob&(nom&)<>-1) topic("Ich weiß nicht, was du siehst, aber ich sehe dieses Objekt nicht.") ELSE sp_gef!=0 GOSUB spc_betr IF sp_gef!=TRUE a$=o$(nom&) ' SELECT nom& CASE 18 IF fl!(4) a$=a$+" Sie liegen bewußtlos da." ELSE a$=a$+" Sie agieren. Mehr will ich dazu nicht sagen." ENDIF CASE 36 IF fl!(13) a$=a$+" Er ist offen." ELSE a$=a$+" Er ist geschlossen." ENDIF CASE 45 IF NOT fl!(21) a$=a$+" Sie ist leer." ELSE a$=a$+" Eine Disk ist drin." ENDIF CASE 37 IF fl!(14) a$=a$+" Es ist offen." ELSE a$=a$+" Es ist geschlossen." ENDIF CASE 49 TO 52 IF fl!(9+nom&-49) a$=a$+" Er ist auf EIN." ELSE a$=a$+" Er ist auf AUS." ENDIF CASE 33 IF fl!(22) a$=a$+" Er liegt einfach so da." ELSE a$=a$+" Der AUTOR hat ihn fest in seiner Hand." ENDIF ENDSELECT ' GOSUB topic(a$) ' ENDIF ENDIF ENDIF ENDIF RETURN ' PROCEDURE spc_betr IF nom&=5 open_top print_cs(" ") print_cs("Vertretungsplan vom 01.04.1997 Donnerstag") print_cs(" ") print_cs("Ottohans 1. fällt aus") print_cs(" 2.bis 3. Nitschke") print_cs(" 4. wird auf 2.5.verschoben") print_cs(" ") print_cs("Schulte 1. fällt aus, Overhead") print_cs(" ") print_cs(" Gez. Amtmann") close_top ELSE IF nom&=39 open_top print_csf("hier ist der autor") a$="wie sie sicher schon bemerkt haben, befindet sich das " a$=a$+"weltverwaltungsgebäude samt amtmann in meiner gewalt. " a$=a$+"wagen sie es nicht, einen befreiungsversuch zu starten, " a$=a$+"denn ich habe unter dem gebäude eine nuklearwaffe plaziert, " a$=a$+"die ich unverzüglich zur detonation bringen werde, falls " a$=a$+"meine forderungen nicht binnen 24 stunden erfüllt werden." printw(2,a$,FALSE) ADD cy%,8 print_cs("ich fordere : ") print_cs("- freies geläut für mich und meine männer") print_cs("- 20 mio lünebests in nichtmarkierten bechern") print_cs(" ") print_cs("das ultimatum läuft morgen, 18 uhr ortszeit ab.") print_cs("gez. autor") close_top ELSE sp_gef!=TRUE ENDIF RETURN ' PROCEDURE lege IF nom&=-1 gigo ELSE IF ob&(nom&)<>-1 topic("Was man nicht hat, kann man auch nicht ablegen.") ELSE topic("Es liegt jetzt da so rum.") ob&(nom&)=raum& ENDIF ENDIF RETURN ' PROCEDURE nimm IF nom&=-1 topic("Ja, was denn ???") ELSE IF ob&(nom&)=-1 topic("Sag mal, bist du blind oder was? Das Objekt ist doch schon in deinem Beutel.") ELSE IF ob&(nom&)=0 OR ob&(nom&)<>raum& topic("Dieses Objekt ist nirgends zu sehen!") ELSE SELECT nom& CASE 48 topic("Die Disk ist wieder in deiner (linken) Hand.") fl!(21)=FALSE ob&(48)=-1 CASE 33 IF fl!(22) topic("Okay!") ob&(33)=-1 dos(0,10) ELSE topic("Der AUTOR steht (bzw. liegt) zwischen dir und dem Schüssel.") ENDIF CASE 41,42,43 topic("Du brauchst den Hubschrauber nicht zu verstümmeln. Das ist absolut nicht notwendig.") CASE 38 topic("Das Atom-Ei ist wohl etwas zu schwer für dich.") CASE 37 topic("Was willst du mit dem blöden Gitter. Flöhe fangen?") CASE 36 GOSUB unter CASE 27 topic("Das war dein letzter Fehler...") topic("Der Executor sagt : 'MAKE MY DAY!'") topic("Aha, ein C.E. Fan!") GOSUB tod("Der Executor hat dich eleminiert.") CASE 32 topic("Als du den AUTOR nehmen willst, wird dieser dadurch geweckt. Und dann ...") topic("Zur Strafe für dein Vergehen wird die Diskette (ja die in deinem Laufwerk) formatiert....(Hä, Hä)") a$="Hinweis des Programmierers:/Der AUTOR kennt sich glücklicherweise " a$=a$+"mit ST's nicht sonderlich gut aus. Deshalb weiß er auch nicht, " a$=a$+"wie er das Formatieren programmieren soll. Glück gehabt." topic(a$) GOSUB tod("Der AUTOR hat gesprochen - Du bist weg vom Fenster!") CASE 49 TO 52 topic("Der Sicherungskasten könnte das als persönlichen Angriff verstehen.") CASE 19 topic("Was willst du mit dem ganzen Plunder.") CASE 12,8 topic("Er wehrt sich so stark, daß es dir nicht möglich ist, ihn aufzunehmen.") CASE 13 topic("Lüstling!") CASE 17,18,21,24,25,28,30,31,34 topic("Bist du wahnsinnig!!!") CASE 16 GOSUB check_flag(4,"Die Herren und die Dame verhindern dieses Vorhaben.",1,3) CASE 14 GOSUB check_flag(3,"Die Lehrerin läßt dich nicht daran",2,5) CASE 0,5,6,7,15,29,40 topic("Das ist zu schwer für dich.") CASE 26 IF v&(16,3)=0 topic("Der Pfarrer hindert dich dran.") ELSE topic("Da der Pfarrer betäubt ist, kein Problem.") ob&(nom&)=-1 dos(3,5) ENDIF CASE 1,2,3,4,20,22,23,35,39 z%=RANDOM(4) SELECT z% CASE 0 topic("Wie eure Mordschaft befehlen.") CASE 1 topic("Ei, Ei, Kapitän!") CASE 2 topic("Euer Wunsch ist mir Befehl.") CASE 3 topic("Ich habe es genommen.") ENDSELECT ob&(nom&)=-1 CASE 5 topic("Das Objekt ist zu stark befestigt.") CASE 10,11 topic("Das ist Unsinn.") CASE 9 GOSUB check_flag(0,"'Assistent' hindert dich dran.",3,5) DEFAULT topic("Was willst du mit dem Gerümpel, häh....?") ENDSELECT ENDIF ENDIF RETURN ' PROCEDURE geh LOCAL disk% disk%=1 SELECT nom& CASE 0 topic("Boiiiiing !") CASE 1 topic("Ahh, das Bad in der Mülltonne. Sehr gesund!") tod("Du warst nicht zu überriechen.") CASE 2 topic("Du legst die Banane vor dich und gehst rüber. Dabei stolperst du natürlich und schlägst der Länge nach hin.") topic("Mit dem Kopf auf den nackten Stein, das ist nicht gut.") tod("Was sollte das jetzt ????") CASE 3 topic("Das Rotlichtviertel ist zwei Straßen weiter. Aber da warst du doch heute morgen schon.") CASE 6,7 topic("Deine Haare sind zu lang. Außerdem lassen sie dich nicht in ihre Mitte.") CASE 21 topic("Bitte ????") CASE 24,25,27,28,32,38,34 topic("Näher würde ich mich nicht herantrauen.") CASE 45,46,8,10,12,17 topic("Was willst du da?") CASE 18 topic("Also ich bin wirklich von dir enttäuscht. Wirklich! Echt! Ehrlich! Glaubst mir wohl nicht?") topic("Bitte ....") open_top printw(1,"OUT OF INTERNAL MEMORY - USE FOLDR100.PRG TO GET MORE /SYSTEM HALTED",FALSE) DELAY 16 close_top topic("Na gut, ich will ja nicht so sein.") CASE 13 topic("Na, na, du bist im Dienst. Vergiß das nicht!") CASE 47 open_top print_cs("MikroSocks - DemonstratingOperatingSystem") print_cs("Version 4.12 released 3/2/72 for System X-b542") print_cs(" ") x$="Command not found" REPEAT input_cs(20,CHR$(65+disk%*2)+":",com$) com$=UPPER$(com$) ' IF INSTR(com$," ")<>0 parm%=VAL(MID$(com$,INSTR(com$," ")+1)) com$=MID$(com$,1,INSTR(com$," ")-1) ELSE parm%=0 ENDIF ' IF com$="VER" print_cs("MS-DOS Version 4.12 - Released 03.02.1972") ELSE IF com$="C:" disk%=1 ELSE IF com$="DATE" print_cs("01.04.1997") ELSE IF com$="TIME" print_cs(TIME$) ELSE IF com$="A:" IF fl!(21) disk%=0 ELSE DELAY 2 print_cs("Drive not ready!") ENDIF ELSE IF com$="VIRUS" IF NOT fl!(21) print_cs(x$) ELSE IF parm%=0 OR parm%>4 fl!(17)=TRUE fl!(18)=TRUE fl!(19)=TRUE fl!(20)=TRUE ELSE fl!(16+parm%)=TRUE ENDIF dos(4,6) ENDIF ELSE IF com$="DEVIRUS" IF NOT fl!(21) print_cs(x$) ELSE IF parm%=0 OR parm%>4 fl!(17)=FALSE fl!(18)=FALSE fl!(19)=FALSE fl!(20)=FALSE ELSE fl!(16+parm%)=FALSE ENDIF dos(5,6) ENDIF ELSE IF com$="PACMAN" IF fl!(21)=FALSE print_cs(x$) ELSE print_cs("Im Dienst nicht erlaubt.") ENDIF dos(6,-5) ELSE IF com$="SEARCH" IF fl!(21)=FALSE print_cs(x$) ELSE print_cs("MS - program error ==> does not compute") ENDIF ELSE IF com$="HEIZUNG" IF fl!(17) print_cs("MS - program error ==> does not compute") ELSE GOSUB clrscr print_cs("Vereinigte Nationen - Hauptverwaltung") print_cs("Steuerkontrolle Blockheizkraftwerk") print_cs("Solleistung : 12000KW") print_cs("Istleistung : 11220KW") print_cs("Stromverbrauch : 33567KWh") print_cs(" ") input_cs(20,"Bitte Passwort eingeben : ",a$) IF UPPER$(a$)="NOONOOKEE" print_cs("Der Zugriff auf die Heizanlage ist") print_cs("wegen Wartungsarbeiten momentan nicht möglich.") ELSE print_cs("Falsches Passwort!") ENDIF ENDIF ELSE IF com$="ABOMBE" IF fl!(18) print_cs("MS - program error ==> does not compute") ELSE GOSUB clrscr print_cs("NukeControl V0.00") print_cs("Written by AUTOR") print_cs(" ") IF fl!(16) print_cs("Nuklearstatus : GO") ELSE print_cs("Nuklearstatus : STOP") ENDIF print_cs(" ") input_cs(40,"Enter password to change status : ",a$) print_cs(" ") IF UPPER$(a$)="NOONOOKEE" print_cs("Password correct!") IF (NOT fl!(16)) AND fl!(22)=FALSE close_top topic("Durch dein lautstarkes Atomgewurschtel hast du den AUTOR auf deine Fährte gebracht. Seine Häscher greifen dich ....") GOSUB tod("Ich möchte dir lieber nicht sagen, wie du gestorben bist.") ELSE dos(6,10) ENDIF IF NOT reset! fl!(16)=NOT fl!(16) ENDIF ELSE print_cs("Password incorrect! ") ENDIF ENDIF ELSE IF com$="MISSCON" IF fl!(19) print_cs("MS - program error ==> does not compute") ELSE print_cs("MISSCON - terminal does not match ") ENDIF ELSE IF com$="LABCON" IF fl!(20) print_cs("MS - program error ==> does not compute") ELSE GOSUB clrscr print_cs("Liste der Laborprojekte") print_cs(" ") print_cs("Projekt 4563-X - Skunk") print_cs("Projekt 5623-B - Red Potatoe") print_cs("Projekt 0034-A - Frosch") print_cs("Projekt 1034-Z - Megazillus") print_cs("END OF LIST ") ENDIF ELSE IF com$="DIR" IF disk%=0 print_cs("Directory of Drive "+CHR$(65+disk%*2)) print_cs(" ") print_cs("VIRUS 12.04.1990 34212") print_cs("DEVIRUS 12.04.1990 12341") print_cs("SEARCH 13.06.1991 0") print_cs("PACMAN 17.08.1991 452332") print_cs("66736 Bytes left.") print_cs(" ") ELSE print_cs("Directory of Drive "+CHR$(65+disk%*2)) print_cs(" ") print_cs("HEIZUNG 11.11.1990 265556") print_cs("ABOMBE 01.01.1991 4453") print_cs("MISSCON 13.03.1991 6563454") print_cs("LABCON 17.08.1990 452332") print_cs("52342356 Bytes left.") print_cs(" ") ENDIF ELSE IF com$="EXIT" ELSE print_cs(x$) ENDIF UNTIL com$="EXIT" OR reset! close_top CASE 40 lastraum&=41 raum&=42 CASE 44 open_top print_cs("missile control") print_cs(" ") print_cs("Arms : 4x4 APX-54A missiles") REPEAT IF fl!(23) print_cs("Status : unlocked") ELSE print_cs("Status : locked") ENDIF print_cs(" ") print_cs("=> c]hange status, t]argeting, l]aunch, e]xit") IF fl!(19) print_cs("mc> B532-424 > $E5334 adress : $1BEF3 does not match") print_cs("debug utility still running ....") ELSE input_cs(1,"mc>",a$) ' IF a$="l" GOSUB clrscr IF fl!(24) AND fl!(23) print_cs("Countdown : 5") FOR t%=4 DOWNTO 0 DELAY 1 print_cs(" "+STR$(t%)) NEXT t% print_cs("missile launched.") DELAY 4 print_cs("missile still flying.") DELAY 4 print_cs("missile hits ===> target destroyed") print_cs(" ") fl!(24)=FALSE fl!(25)=TRUE dos(7,25) ELSE print_cs("Can't launch missile.") print_cs(" ") ENDIF ENDIF ' IF a$="t" GOSUB clrscr print_cs("Search target ...") DELAY 5 IF fl!(22) AND NOT fl!(25) print_cs("Find target:") print_cs("heli typ WAU UH1-F ser.num 2534-323-232") input_cs(2,"Confirm target?",b$) IF UPPER$(b$)="Y" print_cs("Aim missile on : 2534-323-232") fl!(24)=TRUE dos(8,5) ENDIF ELSE print_cs("No target present.") ENDIF ENDIF ' IF a$="c" GOSUB clrscr IF fl!(23) fl!(23)=FALSE print_cs("missiles locked") ELSE input_cs(15,"Enter code for unlocking : ",b$) IF UPPER$(b$)="NOONOOKEE" print_cs("Correct! missiles unlocked") fl!(23)=TRUE dos(9,5) ELSE print_cs("Incorrect! missiles locked") ENDIF ENDIF ENDIF ENDIF UNTIL a$="e" OR fl!(19) close_top CASE 11 raum&=2 CASE 37 IF fl!(14) go!=TRUE lastraum&=34 raum&=38 ELSE topic("Boing! Der Kandidat hat 100 blaue Flecke.") ENDIF DEFAULT topic("Deine Quadratlatschen befördern dich zwar an viele Orte, aber nicht dahin!") ENDSELECT RETURN ' PROCEDURE unter IF nom&=-1 topic("Du sprichst so undeutlich!") ELSE IF ob&(nom&)=0 OR (ob&(nom&)<>raum& AND ob&(nom&)<>-1) topic("Dieses Objekt ist nirgends zu sehen!") ELSE a$="Wie du es auch drehst und wendest, nichts besonderes. Tut mir leider leid." SELECT nom& CASE 48 topic("Die Disk ist quadratisch, praktisch gut!") CASE 38 IF NOT fl!(16) topic("Als du mit deinen Fingern an der Bombe rumgrabbelst, macht es plötzlich Klick in der Bombe ...") topic("DU HAST DIE BOMBE EINGESCHALTET, /DU WAHNSINNIGER !!!") topic("Eine rote Leuchte beginnt zu brennen und eine mechanische Stimme scheppert : 'TSX-1321 Codewort zur Detonation akzeptiert. Countdown auf 5min eingestellt. Fröhliche Weihnachten!'") buum%=33 fl!(16)=TRUE dos(10,10) IF fl!(18) IF ob&(48)<>-1 topic("Da du deine Disk leider hast liegenlassen, konnte der AUTOR diese benutzen und die Bombe entschärfen. So ein Pech, so kurz davor und dann noch zu scheitern.") GOSUB tod("Deine Vergeßlichkeit war dein Verderben.") ELSE ob&(40)=0 v&(41,5)=0 fl!(22)=TRUE ob&(32)=0 ENDIF ENDIF ELSE topic("Du kannst sie nicht von hier aus entschärfen.") ENDIF CASE 28 topic("Das Viech würde ich lieber nicht anfassen.") CASE 34 topic("Der Erzähler schnauzt dich kurz an : 'Hau ab!'") CASE 32,27 topic("Du hälst dich lieber fern.") CASE 40 topic("Bei näherem Betrachten bemerkst du, daß der HubSchrabSchrab in voller Kampfausrüstung darsteht. Maschinengewehr, Luft-Luft-Raketen, Bomben etc.") CASE 41,42,43 topic("Bei genauem Hinsehen bemerkst du : ") topic("Die Spannung steigt.") topic("Was bemerkst du?") topic("Sag es ...!") topic("Du bemerkst ... ") topic("STAUB !") topic("bäääh ....!") CASE 4 GOSUB betr CASE 37 IF fl!(14) topic("Das Gitter ist nicht mehr sicher befestigt.") ELSE topic("Das Gitter ist sicher befestigt.") ENDIF CASE 36 SELECT kagg% CASE 0 topic("Als du den Kasten berührst, hörst du ein leises eigenartiges Geräusch.") kagg%=1 CASE 1 topic("Als du den Kasten berührst, schreckst du vor dem lauten Geräusch zurück, welches aus dem Kasten kommt.") kagg%=2 CASE 2 topic("Als du wieder den Kasten berührst, springt er auf, ein 10000Volt Blitz kommt heraus und trifft : DICH.") GOSUB tod("Sicherungskästen sollte man nicht ärgern.") ENDSELECT CASE 25 IF NOT fl!(7) topic("Als du den Pfarrer untersuchst, bemerkst du seinen Heiligenschein.") ob&(26)=16 dos(11,5) ELSE topic(a$) ENDIF CASE 18 IF fl!(4) topic("Beherrsch' dich bitte. Die armen Leute sind bewußtlos und du willst ...") ELSE topic("Wie kannst du nur! Als du die Weichteile der Darsteller antatschen wolltest, greift der Regisseur ein...") GOSUB tod("Du bist vom Regisseur erschlagen worden.") ENDIF CASE 19 IF NOT fl!(6) topic("Während du in dem alten Gerümpel herumstöberst (Staub, Keuch, Staub, Hust), findest du 3 interessante Dinge.") ob&(23)=14 ob&(35)=14 fl!(6)=TRUE dos(12,5) ob&(20)=14 ELSE topic(a$) ENDIF CASE 15 IF ob&(14)=0 topic("Als du das Klavier näher betrachtest, bemerkst du eine Violine, die neben ihm liegt.") dos(13,3) ob&(14)=10 ELSE topic(a$) ENDIF CASE 1 IF ob&(2)=0 AND ob&(3)=0 topic("Beim Wühlen in der Mülltonne findest du etwas.") ob&(2)=raum& dos(14,3) ob&(3)=raum& ELSE topic(a$) ENDIF CASE 10 IF ob&(4)<>0 topic(a$) ELSE topic("In der Nische liegt ein Zettel") dos(15,5) ob&(4)=raum& ENDIF CASE 9 IF ob&(9)=-1 topic("Auf der Unterseite steht: Vorsicht, betäubende Wirkung!/Nur die Echten mit der Chloro-Kirsche.") dos(16,2) ELSE topic(a$) ENDIF CASE 8 IF ob&(9)=0 topic("Als du dir 'Assistent' genauer ansiehst, bemerkst du hinter ihm eine Schachtel Pralinen.") dos(17,2) ob&(9)=6 ELSE topic(a$) ENDIF DEFAULT GOSUB betr ENDSELECT ENDIF ENDIF RETURN ' PROCEDURE open_kasten fl!(13)=TRUE ob&(49)=33 ob&(50)=33 ob&(51)=33 ob&(52)=33 dos(18,15) e$="BYE" RETURN ' PROCEDURE spr IF nom&=-1 topic("Bitte !??!?!") ELSE IF ob&(nom&)<>-1 AND ob&(nom&)<>raum& topic("Dies Objekt ist nirgends zu sehen.") ELSE SELECT nom& CASE 38 topic("Die Atombombe sagt nichts. Wie sollte sie auch, ohne geeigneten Gesprächspartner.") CASE 36 IF fl!(13)=FALSE open_top SELECT kagg% CASE 47,44 topic("Sprechende Computer sind immer noch ein Wunschtraum.") CASE 45 topic("Floppys können singen, aber nicht sprechen.") CASE 48 topic("Das kommt vom vielen Jacken. Die weiße Hacke ist gleich da, ähh, umgekehrt.") CASE 0 kagg%=1 print_cs("Der Sicherungskasten murmelt und sagt : 'Hallo, Du!'") GOSUB print_cs("'Was willst du?'") CASE 1 kagg%=2 print_cs("Der Sicherungskasten sagt ärgerlich : ") GOSUB print_cs("'Mußt du mich in meiner Ruhe stören.'") print_cs("'Was willst du?'") CASE 2 print_cs("Der Sicherungskasten schreit dich an:") print_cs("'Du Idiot! Du Penner!'") print_cs("'Was fällt dir ein?'") print_cs("'Wer bist du, daß du hier rumlärmen kannst.'") print_cs("'Wenn du nicht gleich verschwunden bist,") print_cs("verwandele ich dich in Asche.'") ENDSELECT stufe%=0 REPEAT REPEAT GOSUB input_cs(25,"Deine Antwort : ",e$) UNTIL e$<>"" e$=UPPER$(e$) SELECT stufe% CASE 0 IF INSTR(e$,"ÖFFNE")<>0 IF kagg%=1 print_cs("Ach das willst du.") ELSE print_cs("So, so deshalb also.") ENDIF stufe%=1 ELSE IF kagg%=1 print_cs("Da weiß ich leider auch keinen Rat.") ELSE print_cs("Um seine Probleme müssen sich der Herr ") print_cs("schon selber kümmern.") ENDIF ENDIF CASE 2 IF INSTR(e$,"BITTE")<>0 GOSUB print_cs("Na gut, bei dir ist noch nicht") print_cs("alles verloren.") GOSUB print_cs("Aber jetzt geh, weg, weg, weg!") GOSUB open_kasten ELSE print_cs("Penner, Idiot, mach dich langsam vom Acker!") ENDIF CASE 1 IF INSTR(e$,"BITTE")<>0 IF kagg%=1 GOSUB print_cs("Ich will ja mal nicht so sein.") GOSUB print_cs("Viel Glück.") GOSUB open_kasten ELSE GOSUB print_cs("Du brauchst gar nicht zu schmeicheln.") stufe%=2 ENDIF ELSE IF kagg%=1 print_cs("Das muß ich mir erst noch überlegen.") ELSE print_cs("Unhöflicher Patron, du!") ENDIF ENDIF ENDSELECT UNTIL e$="BYE" OR e$="ENDE" OR e$="END" OR e$="EXIT" OR e$="QUIT" close_top ELSE topic("Der Sicherungskasten sieht relativ gereizt aus. Ich würde ihn nicht weiter belästigen. Grummel, Grummel.") ENDIF CASE 49 TO 52 topic("Die Schalter sind im Gegensatz zum Sicherungskasten nicht sehr gesprächig.") CASE 34 topic("Er sagt: 'Heute fallen mir keine Witze ein.'") CASE 32 open_top a$="Als du den AUTOR weckst und er dich sieht, lacht er. Dann sagt er : " a$=a$+"'Da ich heute meinen brutalen Mittwoch habe, gebe ich dir eine Chance. " a$=a$+"Wenn du meine Frage beantwortest, gebe ich dir den Schlüssel zum Käfig, wenn nicht, dann...'" GOSUB printw(0,a$,FALSE) print_xy(0,6,"Hier ist meine Frage:") print_xy(0,8,"Wie heißt der verrückte Doktor") lese_string(0,9,65,"aus Leisure Suit Larry II : ",a$) close_top IF UPPER$(a$)="NOONOOKEE" topic("Der AUTOR sagt : 'Das war zwar die richtige Antwort, aber du glaubst wohl auch, daß die Babys vom Storch kommen.'") dos(19,10) GOSUB tod("Du bist zu leichtgläubig.") ELSE topic("Der Autor sagt : 'Das war leider falsch. So ein Glück, für mich, versteht sich.'") GOSUB tod("Der AUTOR hat dich ex und hopp. Allerdings mehr ex, um genau zu sein.") ENDIF CASE 30 topic("Er fleht dich an: 'Befreie mich, bitte, bitte, bitte'. Er verschluckt sich fast. Gurgel!") CASE 24 topic("Sie sagt: 'An mir kommt kein Ungläubiger vorbei'. Yeah, ein Fels in der Brandung der Unmoral.") CASE 25 IF fl!(5)=0 topic("Er sagt: 'Scher dich zum Teufel, falls der dich noch haben will.'") ELSE topic("Da er bewußtlos ist, kann er nicht antworten. Ruhe seine Seele in Frieden.") ENDIF CASE 26 topic("Er sagt: 'Geh mit Gott, mein Sohn, aber GEH !'") CASE 27 topic("Der Executor antwortet nicht. Komischer Zeitgenosse.") CASE 28 topic("Es sagt: 'smufs snir sdert muijk kl'. Ach, immer diese Mutierten mit ihrer undeutlichen Aussprache.") CASE 21 IF fl!(2)<>TRUE open_top print_my(1,"Die Schwester spricht:") printw(3,"Wenn du 3 Fragen richtig beanwortest, werde ich dir etwas sehr Wertvolles geben. Bist du bereit?",FALSE) GOSUB wfk t&=0 lese_string(0,6,65,"Was bedeutet CO2:",a$) IF UPPER$(a$)="KOHLENDIOXID" INC t& ENDIF lese_string(0,8,65,"Welches Element hat ein Proton : ",a$) IF UPPER$(a$)="WASSERSTOFF" INC t& ENDIF lese_string(0,10,65,"Wer ist Gott:",a$) close_top IF t&=2 topic("Du hast alle Fragen richtig beantwortet, nimm mein Geschenk.") fl!(2)=TRUE ob&(22)=-1 dos(20,25) ELSE topic("Du hast es leider nicht geschafft. Du hättest die Schule nicht so oft schwänzen sollen.") topic("So ein Pech, sie hat dich durchschaut.") ENDIF ELSE topic("Sie sagt nichts.") ENDIF CASE 0,1,2,3,4,5,9,10,11,14,15,16,19,20,29,31,33,39 gigo CASE 40,41,42,43 topic("Fühlst du dich noch?") topic("Nein, das freut mich!") CASE 17 IF fl!(4) topic("Du hörst von ihm nur ein seliges Schnarchen.") ELSE topic("Er schreit: 'Eih, what are you störing mei Film!'") ENDIF CASE 18 IF fl!(4) topic("Das also ist ein K... i... {Censored by moralian guardians}") ELSE topic("Die beiden schreien: 'Raus, du hast nicht bezahlt.'") ENDIF CASE 6 topic("Die Kahlköppe reagieren nicht. Was hättest du auch sonst von ihnen erwarten können?") CASE 13 topic("Sie sagt: 'Ich bin stolze 1.40m groß.'") CASE 12 topic("Der Bibliothekar sagt nichts, er sieht dich nur fragend an.") CASE 7 topic("Die Beamten sagen: 'Unser Amtmann ist verschwunden.'") CASE 8 IF fl!(0) topic("Er reagiert nicht, sondern schaut nur gespannt dem Geschehen auf seiner Mattscheibe zu.") ELSE topic("'Assistent' sagt: 'Hast du irgend'was Schönes für mich (Er blinzelt lüstern).'") ENDIF DEFAULT topic(" ??? ") ENDSELECT ENDIF ENDIF RETURN ' PROCEDURE spc_events LOCAL da! da!=FALSE IF fl!(16) AND (NOT fl!(18)) AND buum%=31 topic("Durch dein lautstarkes Atomgewurschtel hast du den AUTOR auf deine Fährte gebracht. Seine Häscher greifen dich ....") GOSUB tod("Ich möchte dir lieber nicht sagen, wie du gestorben bist.") ENDIF ' IF fl!(16) AND buum%=-1 topic("In diesem Moment spürst du unter deinen Füßen ein Grummeln ...") GOSUB atom ENDIF ' IF raum&=44 AND fl!(17) AND md!(0) topic("Da du an der Heizungssteuerung herumgespielt hast, wird es abwechselnd warm und kalt, abwechselnd -123C und +890C.") GOSUB tod("Du bist erfrannt (==> erfroren und verbrannt).") da!=TRUE md!(0)=FALSE ENDIF IF raum&=44 AND fl!(20) AND (NOT reset!) AND md!(1) topic("Da du an der Laborsteuerung herumgespielt hast, wurden sämtliche Käfige fatalerweise geöffnet und die Versuchstiere freigelassen.") topic("Du stehst vor einer roten Killertomate.") GOSUB tod("Die Killertomate war gar nicht genießbar.") md!(1)=FALSE da!=TRUE ENDIF IF raum&=35 AND (NOT reset!) AND md!(2) topic("Als du diesen Raum betrittst, schwant dir schon Schreckliches ...") topic("Richtig geschwant, denn in diesem Raum sind Selbstschußanlagen. Just in dem Moment, in dem du den Raum betreten hast, haben sie sich auf dich eingeschenkt und eine Salve abgegeben.") topic("In den letzten Sekunden deiner irdischen Existenz bemerkst du im Hintergrund des Raumes eine Tür. Dahinter muß etwas sehr Wertvolles sein.") GOSUB tod("Zuviel Blei ist ungesund.") md!(2)=TRUE ENDIF IF raum&=23 AND NOT reset! IF fl!(7)=TRUE IF md!(3) topic("Selbst der Executor hat vor dem Heiligenschein Respekt. Du kannst passieren.") dos(21,15) md!(3)=FALSE ENDIF ELSE topic("Hier lauert der Executor ........:") topic("Er lauert auf ...") topic("DICH !!!") wfk GOSUB tod("Der Executor hat dich exekutiert.") ENDIF da!=TRUE ENDIF IF raum&=26 AND NOT reset! IF fl!(8)=TRUE IF md!(4) md!(4)=FALSE topic("Die Gasmaske bewahrt dich vor den giftigen Gasen dieses Raumes.") dos(22,15) ENDIF ELSE topic("Durch die Ausdünstungen des Stinktieres wirst du bewußtlos.....") wfk GOSUB tod("Das Stinktier war dein Tod. Es war nicht zu erriechen.") ENDIF da!=TRUE ENDIF IF raum&=10 AND NOT reset! IF fl!(1)=FALSE topic("Als du die Tür öffnest, macht dich der Lärm bewußtlos...") wfk GOSUB tod("Der Gesang war zu viel für dich.") ELSE IF md!(5) md!(5)=FALSE dos(23,15) topic("Da du die Ohrenschützer aufgesetzt hast, kann dir der Lärm nichts anhaben.") ENDIF ENDIF da!=TRUE ENDIF IF raum&=15 AND ob&(24)=15 AND (NOT reset!) AND md!(8) topic("Eine Nonne versperrt den Weg nach Westen.") md!(8)=FALSE da!=TRUE ENDIF IF raum&=16 AND NOT reset! IF fl!(5)=0 IF md!(6) md!(6)=FALSE topic("Ein Pfarrer versperrt den Weg nach Westen.") ENDIF ELSE IF md!(7) md!(7)=FALSE topic("Ein bewußtloser Pfarrer versperrt nicht den Weg nach Westen.") ENDIF ENDIF da!=TRUE ENDIF RETURN ' PROCEDURE gib IF nom&=-1 topic("Dat kappeer ik net!") ELSE IF ob&(nom&)<>-1 topic("So etwas hast du gar nicht.") ELSE SELECT nom2& CASE 45 IF nom&=48 topic("Die Disk ist im Laufwerk.") fl!(21)=TRUE ob&(48)=46 dos(24,5) ELSE topic("Das paßt da wohl kaum rein. Du verwechseltst die Diskstation wohl doch mit einem Toaster.") ENDIF CASE 13 IF nom&=22 topic("Die Lehrerin ist hoch entzückt und dir ewig dankbar. Sie ruft ununterbrochen : 'Hurra, hurra, danach habe ich mein ganzes kurzes Leben lang gesucht.'") fl!(3)=TRUE dos(25,15) ob&(22)=0 ELSE topic("Danke, nein.") ENDIF CASE 12 topic("Der Bibliothekar nimmt nichts, er sieht dich nur fragend an.") CASE 8 IF nom&=16 topic("Der 'Assistent' ist hoch erfreut und schiebt sich die Cassette in den Recorder. Er hat dich vergessen und ist glücklich.") fl!(0)=TRUE dos(26,15) ob&(16)=0 ELSE topic("Er lehnt grunzend ab.") ENDIF CASE 24 IF nom&=3 topic("Als die Nonne den Playboy sieht, läuft sie schreiend weg. Das war wohl doch etwas zuviel für die Gute. Der Weg ist frei.") v&(15,3)=16 dos(27,15) ob&(3)=15 ob&(24)=0 ELSE topic("Die Nonne sagt : 'Von einem Gottlosen nehme ich nichts. Scher dich zum Teufel.'") ENDIF CASE 25 IF nom&=2 a$="Der Pfarrer schnappt sich die Banane und ißt sie auf. Da wird er grün im Gesicht und fällt tot um." a$=a$+" Plötzlich ertönt von oben eine Stimme und sagt drohend: 'WIE KANNST DU ES WAGEN?'" GOSUB topic(a$) GOSUB tod("Gottes Blitz hat dich getroffen.") ELSE IF nom&=9 AND fl!(5)=0 topic("Der Pfarrer greift gierig nach den Pralinen. Als er eine gegessen hat, wird er bewußtlos. Der Weg ist frei.") dos(28,15) v&(16,3)=19 ob&(9)=0 fl!(5)=TRUE ELSE topic("Da der Pfarrer darnieder liegt, kann er nichts annehmen.") ENDIF CASE 6 topic("Die Skins nehmen nichts an.") CASE 7 topic("Die Beamten sind viel zu beschäftigt, um etwas anzunehmen.") CASE 17 IF fl!(4) topic("Er ist bewußtlos, da kann er nichts nehmen.") ELSE topic("Der Regisseur nimmt nichts, er schreit nur : 'Rüüs, rüüs, rüüs'") ENDIF CASE 18 IF fl!(4) topic("Sie schlafen (im Sinne von 'die Augen zumachen').") ELSE topic("Die Darsteller wollen nichts von dir.") ENDIF CASE 27 topic("Als du dem Executor deine Hand hinhälst, packt er blitzschnell zu. ZACK!") GOSUB tod("Deine Vertrauensseligkeit war dein Tod!") CASE 28 topic("Das Stinktier will nichts. Was sollte es auch mit deinem Krempel. Es hat einen Vertrag bei Fidal Fassuun : Das Eu de Toilet der Saison.") CASE 32 topic("Da er schläft, kann er auch nichts annehmen. Ist doch logisch, oder?") CASE 30,32,34,36 topic("Er will nichts.") CASE 21 topic("Sie sagt : 'Außer Blausäure und Arsen kann ich nichts gebrauchen.'") DEFAULT topic("Tote Sachen können nichts nehmen, du Hirni!") ENDSELECT ENDIF ENDIF RETURN ' PROCEDURE versp IF nom&=-1 topic("Dieses Futtermittel kenne ich nicht.") ELSE IF ob&(nom&)<>-1 AND ob&(nom&)<>raum& topic("Was nicht da ist, kann man auch nicht verspeisen.") ELSE SELECT nom& CASE 44,45,46,47 topic("Du bist kein Cracker!") CASE 35 topic("Du nimmst den Schraubenzieher und schluckst ihn in einem Stück hinunter. Gluck.") topic("Das war ein Fehler!") tod("Du bist an perforiertem Magen gestorben.") CASE 38 topic("Du verwechselst Plutonium mit Vita-Burlecitin.") CASE 36,49,50,51,52 topic("Als du in die Kabels beißt und den blanken Draht berührst, springt ein Funke über und verwandelt dich in Asche.") GOSUB tod("Deine Asche ist vom Winde verweht.") CASE 30 topic("Du greifst den armen Menschen, häutest ihn mit einer Büroklammer und brätst ihn über deinem Feuerzeug. Dann verspeist du ihn genüßlich. Doch dann .....") topic("Bist du wahnsinnig!!!!. Du sollst den Menschen retten, nicht auffuttern.") GOSUB tod("Soviel Schwachsinn gehört bestraft.") CASE 28 topic("Du greifst das arme Tier, häutest es mit einer Büroklammer und brätst es über deinem Feuerzeug. Dann verspeist du es genüßlich. Doch dann .....") GOSUB tod("Dein Magen war gar nicht gut auch das Stinktier zu sprechen. Würg!") CASE 27 topic("Der Executor ist absolut ungenießbar. Zuviel Knochen, vielzuviel Metall, noch mehr Sehnen, und kaum Fleisch (Das erinnert mich doch dunkel an etwas). Bääääääh!") CASE 26 topic("Als du reinbeißt, springt ein Funke über, in deine Zähne und dann in deinen ganzen Körper.") GOSUB tod("100000 Volt halten auch deine Widerstandsbeißer nicht aus.") CASE 22 topic("Du bist groß genug (vor allem deine Füße)!") CASE 19,20,23,32,33,37 topic("Das gibt Verstopfung. Garantiert!") CASE 18 topic("Ihhhh, wie kann man nur rohes Fleisch essen wollen. Iiii pfui.") CASE 16,33,48 topic("Ja,ja Eisenoxid ist gut für's Blut.") CASE 14,15 topic("Man kann die Musikbegeisterung auch übertreiben.") CASE 10,11,29,31,40,41,42,43 GOSUB topic("Das Sanatorium ist schon verständig. Bitte warte ein paar Minuten...") CASE 9 IF ob&(9)=-1 topic("Nachdem du eine von den Pralinen genascht hast, wird dir ganz schummeeerriiiggg ....") open_top print_my(5,"Schnarch...Schnarch...Schnarch......") close_top topic("Du fühlst dich etwas schlapp") ELSE topic("Du kommst nicht an diese Leckerei ran.") ENDIF CASE 24,25 topic("Das ist nicht der Film : Unter Kannibalen geboren Teil VI. So war das mit der Armenspeisung nicht gemeint.") CASE 21 topic("Das ist nicht der Film : Unter Kannibalen geboren Teil V. Außerdem schmeckt Leder ohne Salz nicht sonderlich gut, und in diesem Adventure gibt es kein Salz.") CASE 12,13 topic("Das ist nicht der Film : Unter Kannibalen geboren Teil IV. Außerdem willst du ja wohl nicht den Wissensstand dieses Hause senken.") topic("Wobei der eh schon niedrig genug ist.") CASE 8,17,34 topic("Das ist nicht der Film : Unter Kannibalen geboren Teil I. Außerdem ist Menschenfleisch ungesund, frag da mal die Eingeborenen von 'Monkey Island™'.") topic("'Monkey Island™' ist eingetragenes Warenzeichen von LucasArts, einer Lucasfilm Division.") topic("Anmerkung des Programmierers:/Apropos LucasArts. Daß Ihr Monkey 2 nicht für den ST herausbringt, werde ich Euch nie verzeihen.") CASE 6 topic("Das ist nicht der Film : Unter Kannibalen geboren Teil II. Außerdem ist Stroh schwer verdaulich.") CASE 7 topic("Das ist nicht der Film : Unter Kannibalen geboren Teil III. Außerdem schmecken eingeschlafene Füße nicht.") CASE 0 topic("Als du in den Pfahl beißt, muß ein Zahn dran glauben. Nächste Woche zum Zahnarzt. Hä Hä!") CASE 1 topic("Guten Appetit!") CASE 2 topic("Du schlingst die Banane hinunter. Auf einmal wird dir schwindellliiiggg ...") GOSUB tod("Die Banane entsprach doch nicht mehr den Gesundheitsvorschriften.") CASE 3 topic("Lustmolch!") CASE 4,39 topic("Der Zettel schmeckt zwar nicht besonders, aber er macht satt.") ob&(nom&)=0 CASE 5,32,40 gigo ENDSELECT ENDIF ENDIF RETURN ' PROCEDURE spl IF nom&=-1 topic("Hääääääääääääääääääh!") ELSE SELECT nom& CASE 15 topic("Ein Jerry Lee Lewis wird du nie. Gib's auf!") CASE 0 topic("Na ja, dünn und dämlich genug bist du ja.") CASE 6 topic("Du bist nur einer.") CASE 1,8,28 topic("Jawoll, Glückwunsch. Du hast den Job!") CASE 2,3,18,24,25,27,32,34,48 topic("Bist du gar nicht der Typ für. Laß es!") CASE 7,8,30 topic("Du bist schon faul genug. Laß es!") CASE 8,12,13,17,21 topic("Mit deinen beiden linken Händen? Aussichtslos!") CASE 14 topic("Du spielst eine kleine häßliche Melodie.") IF raum&=11 AND fl!(4)=0 topic("Die Akteure sind von deinem Werk so entrückt, daß sie bewußtlos zu Boden sinken.") dos(30,15) fl!(4)=TRUE ENDIF DEFAULT topic("So etwas ist nicht spielbar.") ENDSELECT ENDIF RETURN ' PROCEDURE schalt SELECT nom& CASE 49 TO 52 alt_raum&=-1 IF fl!(9+nom&-49) fl!(nom&-40)=FALSE topic("Der Schalter ist aus.") ELSE fl!(nom&-40)=TRUE topic("Der Schalter ist ein.") ENDIF GOSUB force_wred CASE 42 IF fl!(15) topic("Tck, tck, tck, tck, tucke, tucker, tucker ....") topic("Die Moteren sind aus.") fl!(15)=FALSE ELSE topic("Tucker, tucker, tucker, tucke, tck, tck, tck, tck ....") topic("Du hast die Moteren gestartet. Das Ding ist flugbereit. Mast- und Schrotbruch!") topic("Nimm's nicht wörtlich!") dos(32,10) fl!(15)=TRUE ENDIF CASE 41 IF NOT fl!(15) topic("Um zu fliegen, müssen die Motoren laufen, du Hirni!") ELSE topic("Die Steuerung funktioniert nur, wenn du in der Luft bist. Ist doch kloar ..") ENDIF CASE 43 IF NOT fl!(15) topic("Ohne laufende Motoren fliegt der beste Flieger nicht. So ist das leider.") ELSE topic("Du trittst auf die Pedale, der Schrauber hebt ab, aber du hast was vergessen.") topic("Du weißt nicht, was?") topic("Immer noch nicht?") topic("DU KANNST NICHT FLIEGEN !!!") topic("Du verglühst in einer feurig-heurigen Explosion.") GOSUB tod("Hättest du doch in der Theorie besser aufpaßt!") ENDIF CASE 38 GOSUB unter CASE 14,15 topic("Das Ding funktioniert ganz altmodisch, ohne Synthie. Also laß' das Schalten!") CASE 19,20,23 topic("Da gibt's nichts zum Schalten. Beherrsch' dich!") CASE 44 TO 47 topic("Du kannst leider am Gerät keinen Schalter entdecken. Das ist eines von den neuen japanischen Wegwerfgeräten. Die Dinger laufen solange, bis sie kaputt sind.") CASE 7,8,12,13,17,18,24,25,30,32,34 topic("Du verwechselst da etwas. Menschen haben keinen Hauptschalter. Die laufen von alleine.") DEFAULT topic("DU solltest mal DEINE Schaltungen überprüfen. Du hast doch einen Riß in der Platine.") ENDSELECT RETURN ' PROCEDURE set IF ob&(nom&)<>-1 topic("Du hast den Gegenstand nicht in deine Händen, und demzufolge kannst du ihn auch nicht aufsetzen. Ist doch logisch, oder ?") ELSE SELECT nom& CASE 1 topic("Da die Mülltonne zu schwer ist, setzt du nicht die Mülltonne auf, sondern setzt dich in die Mülltonne.") topic("Dein Wunsch ist mir Befehl....") topic("Durch dein Müllbad hast du leider einen unverwechselbaren Geruch angenommen und demzufolge ....") tod("Terroristen haben feine Nasen.") CASE 2 topic("Die Banane ist viel zu groß für deinen Kopf.") CASE 3,39,4 topic("Der taugt doch höchstens als Fliegenpatsche.") CASE 5,36 topic("Du kriegst das Ding leider nicht aus der Wand, leider!") CASE 9 topic("Du schmierst dir das Zeugs in die Haare. Und jetzt ???") CASE 35 topic("Du nimmst den Schraubenzieher und steckst ihn in deinen Kopf. Du freust dich.") topic("Aber nicht lange ...") tod("Menschen mit einem Schraubenzieher im Kopf sind nicht lebensfähig.") CASE 23 topic("Die Ohrenschützer sind drauf.") fl!(1)=TRUE dos(33,15) ob&(23)=0 CASE 20 topic("Die Gasmaske klemmt etwas, aber sie sitzt.") ob&(20)=0 dos(34,15) fl!(8)=TRUE CASE 26 topic("Als du den Heiligenschein aufsetzt, fühlst du eine gewisse Erleuchtung.") ob&(26)=0 dos(35,20) fl!(7)=TRUE DEFAULT topic("Das ist doch hirnrissiger Blödsinn, was du da machen willst.") ENDSELECT ENDIF RETURN ' PROCEDURE off IF nom&=-1 topic("DAS kriege ICH nicht AUF!") ELSE IF ob&(nom&)<>raum& topic("Hier ist nichts zum Öffnen") ELSE SELECT nom& CASE 1 topic("Der Restebehälter ist schon sperrangelweitoffen.") CASE 2 topic("Was erwartest du? Marzipan? Nun, es sieht jedenfalls so aus ...") CASE 3 topic("Du willst es aber genau wissen, was?") CASE 5 topic("So spitz sind dein Fingernägel nicht.") CASE 37 IF nom2&<>-1 IF nom2&=35 AND ob&(35)=-1 topic("Mit flinken Bewegungen löst du die vier Schrauben, welche die Gitterplatte festhalten. Der Weg ist frei.") v&(34,3)=38 fl!(14)=TRUE dos(36,12) ELSE topic("Das haut nicht hin!") ENDIF ELSE topic("Als du versuchst, das Gitter mit bloßen Händen zu öffnen, brichst du dir einige Fingernägel ab. Das tut weh!") ENDIF CASE 36,38 GOSUB unter CASE 29 IF nom2&<>-1 IF nom2&=33 AND ob&(33)=TRUE topic("Der Käfig ist offen.") dos(37,20) GOSUB ende ELSE topic("Ohne Schlüssel geht das nicht.") ENDIF ELSE topic("Willst du den Käfig mit deinen Zähnen aufbeißen?") ENDIF CASE 49 TO 52 topic("Laß das lieber den Elektriker machen.") CASE 48 topic("Das würde ich lieber lassen, die Disk brauchst du eventutell noch.") CASE 31 IF v&(27,1)=0 open_top print_my(1,"DOOR CONTROLLER NUMMER 453 ") print_my(2,"Version 3.2 Bauserie 22213-A") lese_string(0,4,65,"Bitte Codewort eingeben:",a$) IF UPPER$(a$)="OVERHEAD" print_xy(0,6,"Codewort akzeptiert.") print_xy(0,8,"Türöffnung wird eingeleitet.") v&(27,1)=28 dos(38,5) ELSE print_xy(0,6,"Codewort nicht in Ordnung.") ENDIF close_top ELSE topic("Die Tür ist schon offen.") ENDIF DEFAULT gigo ENDSELECT ENDIF ENDIF RETURN ' PROCEDURE zf topic("Als du diesen Raum betrittst, gerätst du in den Strudel eines Randomstrahlers. Du wirst ohnmächtig ....") topic("Als du wieder aufwachst, bist du in einem anderen Raum.") raum&=RANDOM(20)+1 topic("Ha, so ein Schwachsinn, Randomstrahler! (Anmerkung des Programmierers)") RETURN ' PROCEDURE abg topic("Hier ist gar kein Raum, sondern nur ein Abgruuuuuuuuuuuuuuuuuuuund .......") topic("Du bist im freien Fall ...") topic("Aber nicht mehr lange ...") topic("Denn, ") topic("der nächste Boden kommt bestimmt.") GOSUB tod("Du hast dich zu Tode gestürzt.") RETURN ' PROCEDURE luft_sturz topic("Als du weitergehen willst, bemerkst du nicht, wie der Boden sich weiter nach unten neigt. Du kannst dich nicht mehr halten.") topic("Du bist im freien Fall in der Hauptröhre und fällst mit wachsender Geschwindigkeit dem Ansauger entgegen.") topic("Smadder ...") GOSUB tod("Das war deine letzte Rutschpartie.") RETURN ' ' **** Grafik-Routinen **** ' >>>> GRS V1.0 <<<< ' PROCEDURE clear_tops LOCAL t% FOR t%=0 TO DIM?(r_top$())-1 r_top$(t%)="" NEXT t% RETURN ' PROCEDURE build_in(stil%,flag%,x%,y%,a$) IF ontop! AND (NOT w_red!) IF ABS(x%)>0 r_top$(ABS(y%))=CHR$(stil%)+CHR$(flag%)+SPACE$(ABS(x%)-1)+a$ ELSE r_top$(ABS(y%))=CHR$(stil%)+CHR$(flag%)+a$ ENDIF ENDIF RETURN ' PROCEDURE wprbox(x%,y%,x2%,y2%) ADD x2%,ofx% ADD y2%,ofy% ADD x%,ofx% ADD y%,ofy% PRBOX x%,y%,x2%,y2% RETURN ' PROCEDURE wrbox(x%,y%,x2%,y2%) ADD x2%,ofx% ADD y2%,ofy% ADD x%,ofx% ADD y%,ofy% RBOX x%,y%,x2%,y2% RETURN ' PROCEDURE wpbox(x%,y%,x2%,y2%) ADD x2%,ofx% ADD y2%,ofy% ADD x%,ofx% ADD y%,ofy% PBOX x%,y%,x2%,y2% RETURN ' PROCEDURE wtext(x%,y%,l%,a$) LOCAL t% ADD x%,ofx% ADD y%,ofy% PTSIN(0)=x% PTSIN(1)=y% PTSIN(2)=l% PTSIN(3)=0 INTIN(1)=0 IF l%=0 INTIN(0)=0 ELSE INTIN(0)=1 ENDIF ' a$=a$+CHR$(0) FOR t%=2 TO 2+LEN(a$) INTIN(t%)=ASC(MID$(a$,t%-1,1)) NEXT t% ' CONTRL(0)=11 CONTRL(1)=2 CONTRL(3)=LEN(a$)+1 CONTRL(5)=10 CONTRL(6)=vdihandle& VDISYS RETURN ' PROCEDURE offset(x%,y%) ofx%=x% ofy%=y% RETURN ' PROCEDURE sperr ~WIND_UPDATE(1) wup!(wupdex%)=TRUE INC wupdex% RETURN ' PROCEDURE frei IF wupdex%>0 ~WIND_UPDATE(0) DEC wupdex% wup!(wupdex%)=FALSE ENDIF RETURN ' PROCEDURE force_red(x%,y%,w%,h%) ~FORM_DIAL(0,0,0,0,0,x%,y%,w%,h%) ~EVNT_TIMER(500) ~FORM_DIAL(3,0,0,0,0,x%,y%,w%,h%) RETURN ' PROCEDURE force_wred LOCAL a%,b%,c%,d% ~WIND_GET(m4&,4,a%,b%,c%,d%) force_red(a%,b%,c%,d%) reset!=FALSE RETURN ' PROCEDURE deftxt(a%,b%,c%,d%) DEFTEXT a%,b%,c%,d% stil%=b% RETURN ' PROCEDURE wpellipse(x%,y%,r1%,r2%) LOCAL kx#,ky# kx#=640/fw& ky#=400/fh& x%=x%/kx# y%=y%/ky# r1%=r1%/kx# r2%=r2%/ky# ADD x%,ofx%-wx&(m4&) ADD y%,ofy%-wy&(m4&) PELLIPSE x%,y%,r1%,r2% RETURN ' PROCEDURE mausklick LOCAL x%,y%,k% notmaus maus(x%,y%,k%) RETURN ' PROCEDURE mausklick_w LOCAL x%,y%,k% notmaus_w maus_w(x%,y%,k%) RETURN ' PROCEDURE open_top fk#=0.1 do_open_top(0.1,0.1) RETURN ' PROCEDURE do_open_top(fkx#,fky#) sperr ' ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) ' GOSUB set_offset(m4&) ' ontop!=TRUE s_ex%=ex% s_ey%=ey% s_bx%=bx% s_by%=by% s_cx%=cx% s_cy%=cy% ' cx%=0 cy%=0 ex%=ex%+fkx#*bx% ey%=ey%+fky#*by% bx%=bx%-2*fkx#*bx% by%=by%-2*fky#*by% ' DEFFILL 0,1,0 wprbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2) DEFLINE 1,3,0,0 wrbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2) DEFLINE 1,1,0,0 COLOR 0 wrbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2) COLOR 1 GOSUB clear_tops ' GOSUB io_aus frei RETURN ' PROCEDURE close_top deftxt(1,4,0,fntgr%) print_my((by%-sy%/2)/sy%,"Klukken 'se aufde leenke Mausdaste ...") deftxt(1,0,0,fntgr%) GOSUB mausklick_w ' ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) ' ADD ex%,fx& SUB ex%,wx&(m4&) ADD ey%,fy& SUB ey%,wy&(m4&) force_red(ex%-sx%,ey%-sy%,bx%+sx%+sx%,by%+sy%+sy%) ontop!=FALSE ex%=s_ex% ey%=s_ey% bx%=s_bx% by%=s_by% cx%=s_cx% cy%=s_cy% ' GOSUB io_ein GOSUB redraw RETURN ' PROCEDURE clrscr sperr DEFFILL 0,1,0 set_offset(m4&) wpbox(ex%,ey%,ex%+bx%-1,ey%+by%-1) GOSUB clear_tops frei cx%=0 cy%=0 RETURN ' PROCEDURE print_xy(x%,y%,a$) sperr GOSUB set_offset(m4&) ky%=5/6*sy% ' GOSUB build_in(stil%,0,x%,y%,a$) ' IF GDOS? AND prop! IF x%<0 x%=ABS(x%*sx%) ELSE x%=0 ENDIF IF y%<0 y%=ABS(y%) wtext(ex%+x%,y%*sy%+ey%+ky%,MIN(LEN(a$)*8,bx%),a$) ELSE wtext(ex%+x%,y%*sy%+ey%+ky%,0,a$) ENDIF ELSE x%=ABS(x%) y%=ABS(y%) wtext(x%*sx%+ex%,y%*sy%+ey%+ky%,0,a$) ENDIF frei RETURN ' PROCEDURE print_redxy(x%,y%,a$) ky%=5/6*sy% ' IF GDOS? AND prop! IF x%<0 x%=ABS(x%*sx%) ELSE x%=0 ENDIF IF y%<0 y%=ABS(y%) wtext(ex%+x%,y%*sy%+ey%+ky%,MIN(LEN(a$)*8,bx%),a$) ELSE wtext(ex%+x%,y%*sy%+ey%+ky%,0,a$) ENDIF ELSE x%=ABS(x%) y%=ABS(y%) wtext(x%*sx%+ex%,y%*sy%+ey%+ky%,0,a$) ENDIF RETURN ' PROCEDURE print_pxy(x%,y%,a$) sperr GOSUB set_offset(m4&) ky%=5/6*sy% IF GDOS? AND prop! wtext(0,y%+ey%+ky%,0,a$) ELSE wtext(x%+ex%,y%+ey%+ky%,0,a$) ENDIF frei RETURN ' PROCEDURE print_my(y%,a$) LOCAL len%,x1%,x2%,x3%,x4%,y1%,y2%,y3%,y4% sperr GOSUB set_offset(m4&) GOSUB build_in(stil%,1,0,y%,a$) ky%=5/6*sy% IF GDOS? AND prop! ~VQT_EXTENT(a$,x1%,y1%,x2%,y2%,x3%,y3%,x4%,y4%) len%=(bx%-(x2%-x1%))/2 ELSE len%=(bx%-LEN(a$)*sx%)/2 ENDIF wtext(len%+ex%,y%*sy%+ey%+ky%-1,0,a$) frei RETURN ' PROCEDURE print_redmy(y%,a$) LOCAL len%,x1%,x2%,x3%,x4%,y1%,y2%,y3%,y4% ky%=5/6*sy% IF GDOS? AND prop! ~VQT_EXTENT(a$,x1%,y1%,x2%,y2%,x3%,y3%,x4%,y4%) len%=(bx%-(x2%-x1%))/2 ELSE len%=(bx%-LEN(a$)*sx%)/2 ENDIF wtext(len%+ex%,y%*sy%+ey%+ky%-1,0,a$) RETURN ' PROCEDURE print_cs(a$) sperr GOSUB set_offset(m4&) GOSUB scroll GOSUB print_xy(cx%,cy%,a$) INC cy% frei RETURN ' PROCEDURE notmaus LOCAL status%,x%,y%,k% ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) ~WIND_UPDATE(3) REPEAT ~EVNT_BUTTON(1,1,0,x%,y%,k%,status%) UNTIL x%>=fx& AND y%>=fy& AND x%<fx&+fw& AND y%<fy&+fh& ~WIND_UPDATE(2) RETURN ' PROCEDURE notmaus_w LOCAL status%,x%,y%,k% ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) status%=FALSE REPEAT ret%=EVNT_MULTI(&X10011,1,1,0,0,0,0,0,0,0,0,0,0,0,V:mm&(0),127,mx%,my%,mk%,i%,key%,t%) ' IF (ret% AND &X10000)=&X10000 ' Mitteilung GOSUB window_handling ENDIF ' IF reset! ret%=0 GOSUB force_wred ENDIF ' IF (ret% AND &X10)=&X10 ' Maus-Ereignis ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) IF mx%>=fx& AND my%>=fy& AND mx%<fx&+fw& AND my%<fy&+fh& status%=TRUE ENDIF ENDIF UNTIL status% RETURN ' PROCEDURE input_cs(len%,tit$,VAR a$) sperr GOSUB set_offset(m4&) GOSUB scroll frei GOSUB lese_string(cx%,cy%,len%,tit$,a$) INC cy% RETURN ' PROCEDURE scroll LOCAL a$,maxze% maxze%=by%/sy% IF cy%=maxze% a$=UPPER$(CHR$(EVNT_KEYBD())) GOSUB clrscr ENDIF RETURN ' PROCEDURE print_csf(a$) GOSUB set_offset(m4&) GOSUB print_my(cy%,a$) INC cy% RETURN ' PROCEDURE topic(a$) LOCAL len%,fk# cp%=bx%-0.2*bx% calcw(a$,cp%,len%) ADD len%,3 ' fk#=(by%-len%*sy%)/by%/2 ' GOSUB do_open_top(0.1,fk#) printw(1,a$,TRUE) close_top RETURN ' PROCEDURE zapp(a$) LOCAL len% fk#=0.4 do_open_top(0.1,0.4) print_my(1,a$) close_top RETURN ' PROCEDURE printline(x%,y%,a$,fl!) IF fl! print_my(y%,a$) ELSE print_xy(x%,y%,a$) ENDIF RETURN ' PROCEDURE printw(y%,a$,flag!) LOCAL line%,d&,z$,i&,cpl%,t& ' cpl%=bx%/sx% IF GDOS? AND prop! cpl%=cpl%*1.67 ENDIF line%=y% ' d&=1 ' DO z$=MID$(a$,d&,cpl%) ' EXIT IF d&+cpl%>LEN(a$) ' i&=INSTR(z$,"/") IF i&<>0 printline(0,line%,MID$(z$,1,i&-1),flag!) INC line% ADD d&,i& ELSE FOR t&=LEN(z$) DOWNTO 1 EXIT IF MID$(z$,t&,1)=" " NEXT t& ' IF t&=0 printline(0,line%,z$,flag!) INC line% ADD d&,LEN(z$) ELSE IF t&=cpl% printline(0,line%,MID$(z$,1,t&),flag!) ELSE printline(0,line%,MID$(z$,1,t&),flag!) ENDIF INC line% ADD d&,t& ENDIF ' ENDIF LOOP ' a$=MID$(a$,d&) i&=INSTR(a$,"/") IF i&<>0 printline(0,line%,MID$(a$,1,i&-1),flag!) INC line% printline(0,line%,MID$(a$,i&+1),flag!) INC line% ELSE printline(0,line%,a$,flag!) INC line% ENDIF RETURN ' PROCEDURE calcw(a$,cpl%,VAR line%) LOCAL d&,z$,i&,t& ' cpl%=cpl%/sx% IF GDOS? AND prop! cpl%=cpl%*1.67 ENDIF line%=0 ' d&=1 ' DO z$=MID$(a$,d&,cpl%) ' EXIT IF d&+cpl%>LEN(a$) ' i&=INSTR(z$,"/") IF i&<>0 INC line% ADD d&,i& ELSE FOR t&=LEN(z$) DOWNTO 1 EXIT IF MID$(z$,t&,1)=" " NEXT t& ' IF t&=0 INC line% ADD d&,LEN(z$) ELSE INC line% ADD d&,t& ENDIF ' ENDIF LOOP ' a$=MID$(a$,d&) i&=INSTR(a$,"/") IF i&<>0 INC line% INC line% ELSE INC line% ENDIF RETURN ' PROCEDURE maus(VAR mx%,my%,k%) LOCAL status% ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) ~WIND_UPDATE(3) REPEAT ~EVNT_BUTTON(1,1,1,x%,y%,k%,status%) UNTIL x%>=fx& AND y%>=fy& AND x%<fx&+fw& AND y%<fy&+fh& ~WIND_UPDATE(2) RETURN ' PROCEDURE maus_w(VAR mx%,my%,k%) LOCAL status% ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) status%=FALSE REPEAT ret%=EVNT_MULTI(&X10011,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),127,mx%,my%,mk%,i%,key%,t%) ' IF (ret% AND &X10000)=&X10000 ' Mitteilung GOSUB window_handling ENDIF ' IF reset! ret%=0 GOSUB force_wred ENDIF ' IF (ret% AND &X10)=&X10 ' Maus-Ereignis ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) IF mx%>=fx& AND my%>=fy& AND mx%<fx&+fw& AND my%<fy&+fh& status%=TRUE ENDIF ENDIF UNTIL status% mx%=mx%-fx&+wx&(m4&) my%=my%-fy&+wy&(m4&) RETURN ' PROCEDURE key_w(VAR k%) LOCAL status%,mx%,my%,mk%,ret%,i%,t% status%=FALSE REPEAT ret%=EVNT_MULTI(&X10011,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),127,mx%,my%,mk%,i%,key%,t%) ' IF (ret% AND &X10000)=&X10000 ' Mitteilung GOSUB window_handling ENDIF ' IF reset! ret%=0 GOSUB force_wred ENDIF ' IF (ret% AND &X1)=&X1 ' Tasten-Ereignis k%=key% status%=TRUE ENDIF UNTIL status% RETURN ' PROCEDURE lese_string(x%,y%,z%,titel$,VAR s$) LOCAL key%,key$,i%,a_$ a_$="" print_xy(x%,y%,titel$+a_$+"_") i%=LEN(a_$) z%=MIN(z%,-LEN(titel$)+bx%/sx%-1) REPEAT key_w(key%) key$=CHR$(key% AND &HFF) IF (key$<>CHR$(13)) AND (key$<>CHR$(8)) AND i%<z% THEN INC i% a_$=a_$+key$ print_xy(x%,y%,titel$+a_$+"_") ENDIF IF (key$=CHR$(8)) AND (LEN(a_$)>0) THEN DEC i% a_$=MID$(a_$,1,LEN(a_$)-1) print_xy(x%,y%,titel$+a_$+"_ ") ENDIF UNTIL key$=CHR$(13) print_xy(x%,y%,titel$+a_$+" ") s$=a_$ RETURN ' PROCEDURE res_init ' ontop!=FALSE ' ofx%=0 ofy%=0 ' planes#=ROUND(LOG(WORK_OUT(13))/LOG(2)) bs%=((SUCC(WORK_OUT(0))*SUCC(WORK_OUT(1))*planes#)/8)*2 ' scrbuf%=MALLOC(bs%+2048) titel%=scrbuf%+bs% info%=scrbuf%+bs%+1024 ' IF scrbuf%<=0 THEN inst_err("Nicht genügend Speicher!") ENDIF ' mpx%=WORK_OUT(0)+1 mpy%=WORK_OUT(1)+1 ' mx%=0 my%=0 mk%=0 i%=0 key%=0 t%=0 ' DIM mm&(32),sm%(5),dm%(5),p%(8) ABSOLUTE m1&,V:mm&(0) ABSOLUTE m2&,V:mm&(1) ABSOLUTE m3&,V:mm&(2) ABSOLUTE m4&,V:mm&(3) ABSOLUTE m5&,V:mm&(4) ABSOLUTE m6&,V:mm&(5) ABSOLUTE m7&,V:mm&(6) ABSOLUTE m8&,V:mm&(7) ' cx%=0 cy%=0 ' ex%=0 ey%=0 s_cx%=0 s_cy%=0 ' s_ex%=0 s_ey%=0 ' sx%=8 sy%=16 fntgr%=13 ' IF mpy%<400 sy%=8 fntgr%=6 ENDIF ' IF mpx%<640 sy%=6 sx%=6 fntgr%=4 ENDIF ' bx%=78*sx% by%=22*sy% s_bx%=bx% s_by%=by% ' deftxt(1,0,0,fntgr%) RETURN ' PROCEDURE printo FOR t%=0 TO maxn& LPRINT t%'nom$(t%)'ob&(t%) NEXT t% RETURN ' ' **** BUUUM-Daten für "House Quest I" **** ' >>>> HQ1 V2.03 <<<< ' PROCEDURE vorspann print_cs(" ") print_cs(" ") GOSUB print_csf("MEGAVENTURES präsentiert :") print_cs(" ") GOSUB print_csf("T H E H O U S E Q U E S T I") GOSUB print_csf("The search for the lost amtmann") print_cs(" ") GOSUB print_csf("Version 2.03 vom 10.03.1992") print_cs(" ") print_cs(" ") GOSUB print_csf("Fritten by Christian Becker") print_cs(" ") print_cs(" ") GOSUB print_csf("Erstellt mit GFA Basic V3.0 und BUUUM 1D V1.00") print_cs(" ") print_cs(" ") print_cs(" ") GOSUB print_csf("WareFree (wf) 1989-92 yb MEGAVENTURES") GOSUB mausklick_w RETURN ' PROCEDURE ende GOSUB clrscr xx%=(bx%/sx%)/(by%/sy%) y%=0 FOR x%=0 TO bx%/sx% STEP xx% print_xy(-x%,y%,"The End") INC y% NEXT x% y%=0 FOR x%=bx%/sx%-xx%-5 TO 0 STEP -xx% print_xy(-x%,y%,"The End") INC y% NEXT x% no_redraw!=TRUE topic("Der Amtmann ist frei.") topic("Das ist dein Verdienst.") IF NOT fl!(25) topic("Auch wenn du deinen Auftrag nicht ganz erfüllt hast (Der AUTOR konnte fliehen), ist dennoch der Amtmann in Sicherheit.") ENDIF topic("Zu deinen Ehren wird in dem besagten Gebäude eine Ehrenfeier abgehalten, wobei dir der höchste Orden der UN verliehen wird.") topic("Du feierst glücklich und ausgelassen, bis du spät in der Nacht zu deiner Wohnung kommst.") topic("Dort findest du einen Zettel.") topic("Auf dem Zettel steht:/Hallo, herzlichen Glückwunsch zu deinem Orden. Paß auf, daß du noch lange eine Brust hast, wo du ihn anheften kannst. /Gez.AUTOR") IF fl!(25) topic("Der AUTOR. Du hast ihn doch abgeschossen. Wie ist er.... Oder war er gar nicht ...?") ELSE topic("Er hat dich aufgespürt.") ENDIF topic("In dieser Nacht findest du keinen Schlaf. Du grübelst darüber nach, wie es nun weitergehen soll. Sollst du dich dein ganzes Leben lang vor ihm fürchten?") topic("Die Antwort kann nur HOUSE QUEST II geben ...........") ' GOSUB clrscr notmaus y%=(by%/sy%)/2 b$=" " z%=2048 DO print_my(y%,b$) print_my(y%,"Das war ") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"The House Quest I") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"- The Search for the lost Amtmann -") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Noch nicht ausschalten,") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"es kommt noch was.") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Nämlich meine Adresse für ") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"a) Droh- und Schmähbriefe ") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"b) faule Eier, Tomaten und dergleichen") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"c) An-, Auf- und ebensolche Regungen") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"und ... ") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"d) Spenden von 1 bis x DM,") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"wobei x gegen unendlich strebt.") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Denn auch Schwachsinn Verzapfen ") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"kostet Schweiß (weniger) und ") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Mühe (viel mehr).") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Hier nun die versprochene Adresse : ") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' MUL z%,2 print_my(y%,b$) print_my(y%,"Christian Becker") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Bäckerwiese 1") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"W-3408 Duderstadt") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 DIV z%,2 ' print_my(y%,b$) print_my(y%,"Das war's jetzt wirklich.") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Das ist das Ende.") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"AUSSCHALTEN !!!") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Du bist ja immer noch da!") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%*2,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' print_my(y%,b$) print_my(y%,"Ich warne dich, es fängt wieder an ... ") ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%*2,mx%,my%,mk%,i%,key%,t%) EXIT IF (ret% AND 2)=2 ' LOOP ' GOSUB beenden RETURN ' PROCEDURE atom LOCAL y%,r%,a% GOSUB clrscr ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&) CLIP fx&,fy&,fw&,fh& DEFFILL 1,2,14 y%=40 r%=200 ' a%=1 BOUNDARY 0 FOR y%=400 TO 300 STEP -10 DEFFILL 1,2,RANDOM(15)+1 wpellipse(320,y%,r%,40) SUB r%,20 PAUSE a% NEXT y% FOR y%=300 TO 100 STEP -10 DEFFILL 1,2,RANDOM(15)+1 wpellipse(320,y%,40,40) PAUSE a% NEXT y% FOR y%=100 TO 50 STEP -5 DEFFILL 1,2,RANDOM(15)+1 wpellipse(320,y%,r%,40) ADD r%,20 PAUSE a% NEXT y% BOUNDARY 1 GOSUB wfk GOSUB tod("Im Zentrum eines atomaren Feuerballs zu stehen, ist extrem ungesund.") RETURN ' PROCEDURE ges GOSUB clrscr print_cs("HOUSE QUEST I - The search for the lost amtmann - Version 2.03") print_cs(" ") print_cs("Nachricht an : Agent 532-X-23B") print_cs("von : Stabschef der Streitkräfte der Vereinigten Nationen (CSAFUN)") print_cs("Status : Nur für den Dienstgebrauch (Streng geheim)") print_cs("Datum : 01.04.1997") a$="Diese Nachricht hat die ganze Welt erschüttert. Ein unbekanntes Wesen namens AUTOR " a$=a$+"hat den Amtmann(= BOSS) des Weltverwaltungsbüros entführt und in seinem eigenen Gebäude eingekerkert. " a$=a$+"Niemand weiß, woher dieses Wesen kommt und was es will. Forderungen hat " a$=a$+"es bis jetzt nicht gestellt. Aber das ganze Verwaltungsbüro ist lahmgelegt. " a$=a$+"Nichts geht mehr, die gesamte Verwaltung ist zusammengebrochen. " a$=a$+"Chaos und Anarchie breiten sich immer mehr aus. Diesem Treiben muß Einhalt " a$=a$+"geboten werden. Eine bewaffnete Einheit zur Befreiung des Amtmanns wurde " a$=a$+"vollständig aufgerieben. So haben wir uns zu einem Kommandounternehmen " a$=a$+" entschlossen. Ein einzelner Mann, unauffällig, gewöhnlich, soll in das " a$=a$+"Gebäude eindringen, den Amtmann befreien, und, wenn nötig, den AUTOR " a$=a$+"eliminieren. Andere Prioritäten gibt es nicht. Gez. QQX" GOSUB printw(7,a$,FALSE) ADD cy%,13 print_cs("Viel Glück...") GOSUB wfk GOSUB clrscr print_cs("Steuerung:") a$="HQ wird nicht über Worteingabe gesteuert, wie etwa Nimm Geld o.ä., sondern " a$=a$+"die Befehle und Objekte werden einfach mit der Maus angeklickt. Im unteren " a$=a$+"Bereich des Fensters ist ein Feld mit Verben dargestellt, darüber sind " a$=a$+"die sichtbaren Objekte zu sehen. Um nun ein Eingabe zu machen, wird " a$=a$+"zuerst ein Verb angeklickt, dann gegebenenfalls ein Objekt und zum " a$=a$+"Schluß muß noch die Eingabezeile selbst angeklickt werden, um den " a$=a$+"Befehl auszuführen. Die Meldungen des Computers werden in kleinen " a$=a$+"Boxen angezeigt. Während die Box auf dem Bildschirm steht, wartet " a$=a$+"der Rechner auf einen Mausklick. In manchen Spielsituationen erwartet " a$=a$+"der Rechner eine Tastatureingabe. Beendet wird das Spiel durch " a$=a$+"Anklicken der Fensterschließbox." GOSUB printw(2,a$,FALSE) ADD cy%,5 GOSUB wfk GOSUB clrscr print_cs("Befehle : ") print_cs(" ") print_cs("Inhalt : zeigt die genommenen Gegenstände") print_cs("RAM-Save,RAM-Load : speichert einen Spielstand ins RAM") print_cs("Speichern,Laden : '' '' '' auf Disk") print_cs(" ") print_cs("Betrachte : gibt den äußeren Eindruck wieder") print_cs(" (nur aus der Ferne, ungefährlich)") print_cs("Untersuche : betrachtet den Gegenstand näher ") print_cs(" (Unter Umständen gefährlich)") print_cs("Nord,Süd ... : Richtungsbefehle") print_cs("Rest : wie der Name schon sagt.") print_cs(" ") print_cs(" ") print_cs(" ") print_csf("Diese Anleitung kann durch Drücken ") print_csf("einer Umschalttaste bei Programmstart ") print_csf("umgangen werden.") GOSUB wfk RETURN ' ' Flagliste ' 0 - Assistent beschäftigt? ' 1 - Ohrenschützer auf? ' 2 - Fragen richtig? ' 3 - Lehrerin glüecklich ' 4 - Filmcrew bewußtlos ' 5 - Pfarrer bewußtlos? ' 6 - utensilien durchwühlt? ' 7 - Heiliegnschein auf? ' 8 - Gasmaske auf ' 9 - Status Schalter 1 ' 10 - Status Schalter 2 ' 11 - Status Schalter 3 ' 12 - Status Schalter 4 ' 13 - Kasten offen? ' 14 - Gitter offen? ' 15 - Motoren an? ' 16 - Bombe an? ' 17 - heizung verseucht! ' 18 - abombe versucht? ' 19 - rocket verseucht? ' 20 - labor versucht? ' 21 - Disk im Laufwerk? ' 22 - AUTOR gone? ' 23 - Raketen Scharf? ' 24 - Ziel erfaßt? ' 25 - treffer? ' objtext: DATA "Dieser Pfahl ist wohl für eine Fahne gedacht. Er könnte aber " DATA "auch den Eingeborenen als Marterpfahl für unfähige Abenteurer " DATA "dienen. Das läßt sich nicht so genau eruieren." DATA "#R" DATA "Dies ist eine handelsübliche 100-Liter Mülltonne. Sie muffelt, " DATA "weil sie, wie zu erwarten war, seit Wochen nicht geleert wurde. " DATA "So ist nun mal die Bürokratie. Langsam, aber unsicher." DATA "#R" DATA "Diese Banane ist schon uralt und vergammelt. Nur wenn deine Nase " DATA "schon in die Nähe kommt, krümmen sich die Nackenhaare. Absolut " DATA "ungenießbar." DATA "#R" DATA "Der Playboy ist absolut unanständig. Ich möchte dies im " DATA "Interesse unser jüngeren Mitspieler nicht weiter ausführen, " DATA "jedenfalls steigt dir die Schamesröte beim Lesen (???) ins " DATA "Gesicht." DATA "#R" DATA "Auf diesem Zettel steht nur in großen Buchstaben geschrieben: " DATA "NOONOOKEE. Du stellst fest, daß der unbekannte Schreiber dies in " DATA "Rot geschrieben hat. Merkwürdig, Beamte nehmen doch sonst immer " DATA "nur blaue Kulis. (Es sind Kugelschreiber gemeint, nur um " DATA "Mißverständnisse zu vermeiden.)" DATA "#R" DATA "/*/" DATA "#R" DATA "Der Haufen Skins steht absolut apathisch in der Mitte des " DATA "Raumes. Du kannst aus ihrer Miene nicht schließen, was hinter " DATA "der Decke (der Schädeldecke) vorgeht. Alle haben einen " DATA "eigenartigen trüben Blick (Ja, ja, den haben sie immer, aber " DATA "hier besonders)." DATA "#R" DATA "Die Beamten suchen verzweifelt in den Trümmern und murmeln dabei " DATA "immer nur die folgenden Worte: Wo isser, wo isser. Gemeint ist " DATA "wahrscheinlich der eingekerkerte Amtmann. Die Armen scheinen " DATA "noch gar nicht begriffen zu haben, daß er eingekerkert wurde. " DATA "Ja, ja Beamte und Schnelldenker, zwei Sachen, die sich " DATA "ausschließen." DATA "#R" DATA "Du siehst nichts besonderes." DATA "#R" DATA "Hier handelt es sich um eine ganz feine Sorte. Diese nämlich " DATA "kriegt man normalerweise nicht bei IDLA und auf sonst einem " DATA "anderen Grabbeltisch. Dir läuft schon das Wasser im Munde " DATA "zusammen." DATA "#R" DATA "Das ist eine ganz normale Nische. Haben wohl die Handwerker " DATA "vergessen, zuzukleistern. Typisch, nur Pfusch am Bau." DATA "#R" DATA "Bei diesem Gebäude handelt es sich um ein merkwürdiges Haus. Das " DATA "Haus ist groß, der Platz davor ist groß, die Fenster sind groß, " DATA "nur herrscht hier eine gähnende Schläfrigkeit( Wie man in den " DATA "Fenstern sehen kann). Es ist halt ein Verwaltungsgebäude." DATA "#R" DATA "Er sieht völlig normal aus. Aber was heißt das schon." DATA "#R" DATA "Du hast niemals zuvor ein solch kleine Frau gesehen. Paß auf, " DATA "daß du sie nicht zertrittst. Du hast dir erst heute morgen die " DATA "Schuhe geputzt." DATA "#R" DATA "Die Violine sieht so aus, als wäre sie vom Flohmarkt gekauft. " DATA "Die Flöhe springen hoch und weit (oder tief und lang ???)." DATA "#R" DATA "Das Klavier hat auch schon mal besser ausgesehen. Es sieht etwas " DATA "abgegriffen aus. Aber ansonsten noch voll funktionstüchtig. " DATA "Ping, Pong!" DATA "#R" DATA "Auf dem Film steht: Nicht unter 32 freigegeben. Du traust dich " DATA "gar nicht, das Cover anzusehen. Absolut obsolet." DATA "#R" DATA "Das ist der berühmt-berüchtigte Schmalfilmregisseur Karlchen " DATA "Krüger. Auf sein Konto gehen so berüchtigte Schocker wie 'Karate " DATA "Lion VI - Der Schlickboxer' oder 'Indianer Jonas und der Bämbel " DATA "des Todes'." DATA "#R" DATA "Die Darsteller sind splitterfasernackt und befinden sich in " DATA "einer eindeutigen Beziehung zueinander. Im Interesse unserer " DATA "jüngeren Mitspieler verzichte ich darauf, diese Beziehung näher " DATA "zu charakterisieren." DATA "#R" DATA "Allerlei kaputtes, altes ZeuX." DATA "#R" DATA "Die Gasmaske stammt wahrscheinlich aus dem ersten Weltkrieg. " DATA "Durch die Gucklöcher kann man jedenfalls nicht mehr gucken. " DATA "Hauptsache man kann noch atmen, keuch!" DATA "#R" DATA "Die Schwester ist schon in etwas älteren mittleren Jahren. " DATA "Hoffentlich versteht sie ihr Handwerk. Auf jeden Fall wetzt " DATA "sie schon mal ihre Messer. Man kann ja nie wissen, ob noch " DATA "jemand notgeschlachtet werden muß." DATA "#R" DATA "Bei diesen Pillen handelt es sich um Wachstumshormone Marke " DATA "Wolkenkratzer. Genau das Richtige für Leute, die hoch hinaus " DATA "wollen." DATA "#R" DATA "Die Ohrenschützer sind zwar etwas angestaubt, erfüllen aber " DATA "ihren Zweck. Da kommt kein Dezibelchen durch." DATA "#R" DATA "Bei dieser Nonne handelt es sich um eine resolute Frau, die " DATA "nicht willens ist, dich passieren zu lassen. Auf einen Catch " DATA "würde ich also verzichten. Der könnte zu Lasten deiner " DATA "angegrauten Gesundheit gehen." DATA "#R" DATA "Bei diesem Pfarrer verhält es sich ähnlich wie bei der Nonne. " DATA "Auch er will dich nicht vorbeilassen. Sie haben sich " DATA "verschworen. Gott ist nicht mit dir." DATA "#R" DATA "Der Heiligenschein leuchtet so hell, daß er dich fast blendet. " DATA "Es würde dir auch gut stehen. Vielleicht ist Gott doch mit dir." DATA "#R" DATA "Der Executor ist unbeschreiblich. Es handelt sich um .... Im " DATA "Interesse unserer jüngeren Mitspieler verzichte ich hier auf " DATA "eine genaue Beschreibung des Executors. Für Mitspieler, die " DATA "doch an einer genaueren Beschreibung interessiert sind, verweise " DATA "ich auf den Anblick eines Mittagsmahles einer x-beliebigen " DATA "Uni-Mensa. Das trifft es genau." DATA "#R" DATA "Das Stinktier ist eine genetische Mutation mit einem Stinkgrad " DATA "von 1000 Muff. Wobei ein Muff dem Gestank eines faulen Eies " DATA "entspricht." DATA "#R" DATA "Es handelt sich bei diesem Käfig um einen ausbruchssicheren Typ. " DATA "Die Stäbe sind dick, eng und absolut nicht verbiegbar. Selbst " DATA "mit einem Laser würdest du hier nicht reinkommen. Es bleibt also " DATA "nur die Tür." DATA "#R" DATA "DAS ist der verlorene Amtmann. Eine wahrhaft traurige Gestalt. " DATA "Kein Wunder, wenn die Verwaltung nicht richtig verwaltet." DATA "Aber das ist nicht dein Problem, du sollst ihn ja nur retten." DATA "#R" DATA "Die nach Norden führende Tür ist leider gesichert. Neben der " DATA "Tür ist ein Türschloß. Wahrscheinlich geht die Tür damit auf." DATA "#R" DATA "Er sieht ganz normal aus. So wie du und ich, Onkel Herbert, " DATA "Tante Margret, Thomas Gott-Schalck, Georg Busch, laber, laber, " DATA "laber. Aber in seinem Inneren ......?" DATA "#R" DATA "Das ist der Schlüssel zum Sieg. Im wahrsten Sinne des Wortes." DATA "#R" DATA "Der Witzerzähler versteckt sich aus Scham in einer " DATA "undurchdringlichen Wolke. Es will dich weder sehen noch hören. " DATA "Es scheint so, als wäre er heute gar nicht gut drauf. " DATA "Es gibt mehr schlechte als weniger schlechte Witzerzähler." DATA "#R" DATA "Mit diesem Schraubenzieher läßt sich gut in der Nase bohren. " DATA "Aber nur, wenn man Weihnachten nichts mehr vorhat. Warum? Denk " DATA "mal nach!" DATA "#R" DATA "Das ist ein stinknormaler, in weißer DIN-Farbe gestrichener " DATA "Hauptsicherungskasten. Total normal." DATA "#R" DATA "Das ist der Zugang zum Lüftungssystem. Ja, ja nur mit Frischluft " DATA "läßt sich gut und schnell arbeiten. Deshalb gibt es eine Lüftung " DATA "auch nur im Keller des Gebäudes. " DATA "#R" DATA "Das ist ein thermonuklearer Sprengsatz moderster Bauart mit " DATA "schätzungsweise 150 Kilotonnen. Das ist nicht gut. Da du genau " DATA "neben der Höllenmaschine stehst, wird es dir ganz mau in den " DATA "Kniekehlen." DATA "#R" DATA "/*/" DATA "#R" DATA "Es handelt sich um einen stinknormalen HubSchrauber. Er sieht " DATA "startklar aus. Willst du nicht eine Runde fliegen? Nur zur " DATA "Entspannung. Ist bestimmt gut für deine Gesundheit. Du hast dir " DATA "schon lange keine Erholung gekönnt. Nur zu, auf geht's, LOS!" DATA "#R" DATA "Der Hebbel ist zum Steuern da. Bewegt man den Stick nach vorne, " DATA "geht das Ding nach unten, bewegt man ihn nach hinten, geht der " DATA "Schrauber nach unten. Oder war es umgekehrt? Oder links, rechts, " DATA "Tscha Tscha Tscha, Eins, Zwei, Drei ...." DATA "#R" DATA "Der Knopf ist zum Anlassen der Motoren gedacht." DATA "#R" DATA "Die Pedalen dienen zum Regeln des Auftriebs <=> Auf und Nieder." DATA "#R" DATA "Hiermit kann die Luftabwehrbatterie auf dem Dach des Gebäudes " DATA "bedient werden. Der AUTOR scheint vorzubeugen. Obwohl mit diesen " DATA "paar Raketen. Aber der hat bestimmt noch andere Sachen auf Lager." DATA "#R" DATA "Das ist eine handelsübliche 360MB-Floppy von MBI. Nein, du hast " DATA "falsch gedacht, das ist kein Toaster. Du mußt deinen Hunger noch " DATA "etwas zähmen. GRRRRR!" DATA "#R" DATA "Auf dem Monitor steht zu lesen : AfbV - System VII Version 4.21 " DATA "XTF11 Release 1.4.1991" DATA "#R" DATA "Das Terminal lädt praktisch zum Einloggen ein. Hack, hack, " DATA "hurra!" DATA "#R" DATA "Auf der Disk steht : Agentensoftware - Inhalt : VIRUS num, " DATA "DEVIRUS num, SEARCH file, PACMAN. Written by N.N. " DATA "Copyright (c) 1975 Papa Schlecker" DATA "#R" DATA "Das ist ein normaler Schalter." DATA "#R" DATA "Das ist ein normaler Schalter." DATA "#R" DATA "Das ist ein normaler Schalter." DATA "#R" DATA "Das ist ein normaler Schalter." DATA "#R" ' ps_data: DATA 24,52,11 ps_vk: DATA Nord,Süd,West,Ost,Oben,Unten,Neustarten,Inhalt,Laden,Speichern DATA RAM-Save,RAM-Load,Betrachte,Untersuche,Gehe,Nimm,Lege,Spreche DATA Setze,Gib,Verspeise,Spiele,Öffne,Schalte,Hilfe! ' ps_nom: DATA Pfahl,Mülltonne,Banane,Playboy,Zettel,Vertretungskasten,Haufen,Beamte,Assistent,Pralinen,Nische,Gebäude DATA Bibliothekar,Lehrerin,Violine,Klavier,Film,Regisseur,Darsteller,Utensilien,Gasmaske,Schwester,Hormone,Schützer DATA Nonne,Pfarrer,Heiligenschein,Executor,Stinktier,Käfig,Amtmann,Tür,Autor,Schlüssel,Erzähler DATA Schraubenzieher,Kasten,Lüftungsgitter,Atombombe,Schreiben,Schrauber,Hebel,Knopf DATA Pedal,Leitstand,Floppy,Monitor,Terminal,AgentDisk,Schalter1,Schalter2 DATA Schalter3,Schalter4 ps_pr: DATA mit,ab,zu:,der,dem,auf,zur,auf,an ' status: DATA 1,1,0,0,0,3,4,5,6,0,2,1 DATA 7,10,0,10,11,11,11,14,0,13,0,0 DATA 15,16,0,23,26,27,27,27,43,43,25 DATA 0,33,34,36,32,41,42,42,42,45,46,46,46,-1 DATA 0,0,0,0 ' adv_dat: DATA 375 DATA 46,30,1,42,52 short_name: DATA VORHOF,VORRAUM,VERBINDUNGSRAUM,ZENTRALRAUM,KANTINE,TECHNIKRAUM DATA BIBLIOTHEK,FLUR,VERTEILERRAUM,MUSIKZIMMER,KUNSTZIMMER,VERTEILERRAUM DATA ERSTE HILFE RAUM,FUNDUS,RAUM,RAUM,GANG,GANG,GANG,GANG,GANG,GANG DATA SCHWARZER RAUM,RAUM,WITZERZÄHLER,LABOR,FOLTERKAMMER,SCHICKSALSRAUM DATA GANG,GANG,GANG,BEIM AUTOR,RAUM,GANG,RAUM,RAUM,LÜFTUNG,LÜFTUNG,LÜFTUNG,LÜFTUNG DATA DACH,HUBSCHRAUBER,SCHLAFGEMACH,FLUR,FEUERLEITZENTRALE,TERMINALRAUM ' raum: DATA "Du stehst auf dem Hof vor dem besagten Haus. Der Platz ist " DATA "weitgehend verlassen. Im Norden siehst du das besagte Gebäude. " DATA "Es ist groß und hat viele Fenster (Wie sich das anhört). In den " DATA "Fenstern kann man so gut wie nichts erkennen. Das 'so gut wie' " DATA "bezieht sich auf den Dreck, der an den Fenstern ist./Rechts " DATA "neben dir ist ein Pfahl und eine Mülltonne. Sonst ist hier " DATA "weiter nichts besonderes." DATA "#R" DATA "Du stehst im Vorraum des Hauses. Es handelt sich hierbei um so " DATA "einen postmodernen Prachtbau mit viel Glas und Marmor. " DATA "Normalerweise müßte hier ein reges Treiben stattfinden, aber es " DATA "ist nichts los. Vor dir sind zwei Treppen. Eine führt nach oben, " DATA "die andere nach unten. In der rechten Wand ist eine Nische." DATA "#R" DATA "Du stehst in einem Verbindungsraum. Eine Treppe führt nach oben. " DATA "Vor dir ist eine Glaswand, hinter der du einige Gestalten " DATA "erkennen kannst. Die Wand ist so verdreckt, so daß du nicht " DATA "genau erkennen kannst, um wen es sich handelt./An der Wand hängt " DATA "der Vertretungskasten, in dem Änderungen in den Sprechzeiten der " DATA "Leute vermerkt sind." DATA "#R" DATA "Du bist im Zentralraum des unheimlichen Gebäudes. Hier ist es " DATA "genauso wie auf dem Vorplatz: Nichts los. Man ist ja schon " DATA "einiges gewöhnt, aber das? Es führen Verbindungen nach allen " DATA "Seiten. In der Mitte des Raumes steht ein Haufen Skins." DATA "#R" DATA "Du stehst in der Beamtenkantine. Hier hat eine Explosion " DATA "kosmischen Ausmaßes stattgefunden. Allerlei Küchengeschirr, " DATA "Stühle, Vibratoren und ähnliches sind hier verstreut. In den " DATA "Trümmern streunen ein paar Beamte herum." DATA "#R" DATA "Du bist im Technologiezentrum des Gebäudes. Hier ist sozusagen " DATA "des Nervenzentrum des Hauses. Alle Daten-, Strom- und sonstigen " DATA "Leitungen laufen hier zusammen. Auch verschiedene Kopier- und " DATA "FAX-Arbeiten kann man hier erledigen. Diese Gerätschaften sind " DATA "jedoch uninteressant für dich. Der Herr dieser Technik sitzt " DATA "hinter seinem Schreibtisch und heißt 'The Assistent', welcher " DATA "dich bei deinem Eintreten scharf anblickt." DATA "#R" DATA "Du befindest dich in der Bibliothek. Dem Niveau dieses Hauses " DATA "angemessen, ist sie auch nicht allzu groß. Sogar die " DATA "Toilettenanschlüsse sind noch vorhanden. An den Wänden kann man " DATA "hinter den paar Büchern sogar noch einige Sprüche erkennen. Aber " DATA "das ist nebensächlich. Wie gesagt, der Raum ist nicht sonderlich " DATA "gut ausgestattet. Wer hier arbeiten muß, ist echt arm dran. Doch " DATA "es gibt einen, der sich dieser Aufgabe angenommen hat : 'the " DATA "Bibliothekar'. Bei deinem Eintreten blickt er dich fragend an." DATA "#R" DATA "Du bist in einem Verbindungsflur. Die Wände sind grau, der Boden " DATA "schmutzig, die Ecken voller Spinnweben, mit einem Wort : es ist " DATA "dreckig. Hier scheint nichts besonderes zu sein." DATA "#R" DATA "Du bist in einem Verteilerraum. Dieser unterscheidet sich nicht " DATA "sonderlich in Ausstattung und Komfort wie der Flur, der zu ihm " DATA "führt. Aber er hat einen Ausgang mehr. Eine Weg führt weiter " DATA "nach Westen, eine Treppe nach unten." DATA "#R" DATA "Du bist in einem Musikzimmer. Was ein Musikzimmer in einem " DATA "Verwaltungsgebäude zu suchen hat, weiß ich auch nicht. Aber es " DATA "ist nun mal da, damit muß man sich leider abfinden. /Du bist " DATA "nicht allein in diesem Raum, du fühlst eine Bedrohung auf dich " DATA "zukommen: Jawohl, hier ist eine Musiklehrerin. Fragt mich nicht, " DATA "ich weiß es auch nicht. Die MusIkerin bearbeitet das Klavier. Es " DATA "ist unerträglich." DATA "#R" DATA "Du bist in dem Kunstzimmer des Hauses. Fragt mich nicht, was ein " DATA "Kunstzimmer in einem .... . Du schaust dich um und siehst, wie " DATA "hier gerade ein Kunstwerk entsteht. Es handelt sich um einen " DATA "PORNOFILM. Die Hauptdarsteller sind gerade dabei, ..../{Censored " DATA "by moralian guardians}..../Die Crew " DATA "ist bei der Arbeit, und sie sieht es bestimmt nicht gern, " DATA "wenn du sie störst." DATA "#R" DATA "Du stehst in einem Verteilerraum. Zwei Treppe führt nach oben " DATA "und unten, außerdem sind hier verschiedene Türen. Sonst alles " DATA "wie gehabt." DATA "#R" DATA "Du stehst im Erste-Hilfe-Raum des Hauses. Er ist zwar nicht modern " DATA "ausgestattet, aber für die dringendsten Notfälle dürfte es " DATA "reichen. Du siehst im Medizinschränkchen Opium, E605, Speed u.ä. " DATA "Aber das ist nebensächlich. An ihrem Schreibtisch sitzt eine " DATA "ältliche Krankenschwester. Sie ist wohl schon von Anfang an " DATA "dabei. Das Haus wurde meines Wissens 1905 gebaut." DATA "#R" DATA "Du bist in der Gerümpelkammer des Hauses. Das ist DER wichtigste " DATA "Raum neben der Kantine. Normalerweise ist hier die Hölle los, " DATA "aber da im Haus der Betrieb lahmgelegt ist, ist auch hier nichts " DATA "los. Du bist allein,bis auf ein paar verrottete Utensilien." DATA "#R" DATA "Du bist in einem normalen Raum (Aber was ist schon normal in " DATA "dieser verrückten Welt (Hach, war das jetzt wieder pilosofisch))." DATA "#R" DATA "Du bist in einem fensterlosen Verbindungsraum. Gott sei Dank ist " DATA "noch Strom da, sonst würdest du ins Schwarze treffen, nämlich " DATA "mit deinem Kopf gegen eine schwarze Wand." DATA "#R" DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende " DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der " DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir " DATA "kommt ein Gefühl des Verirrtseins auf." DATA "#R" DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende " DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der " DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir " DATA "kommt ein Gefühl des Verirrtseins auf." DATA "#R" DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende " DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der " DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir " DATA "kommt ein Gefühl des Verirrtseins auf." DATA "#R" DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende " DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der " DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir " DATA "kommt ein Gefühl des Verirrtseins auf." DATA "#R" DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende " DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der " DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir " DATA "kommt ein Gefühl des Verirrtseins auf." DATA "#R" DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende " DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der " DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir " DATA "kommt ein Gefühl des Verirrtseins auf." DATA "#R" DATA "Du bist in einem schwarzen, fensterlosen Raum. In diesem " DATA "Halbdunkel kannst du nicht viel erkennen, aber du spürst, daß du " DATA "nicht allein in diesem Raum ist. Aber was auch immer mit dir in " DATA "diesem Raum ist, es ist nichts Gutes. Die Nackenhaare sträuben " DATA "sich dir : Es ist der EXECUTOR." DATA "#R" DATA "Du stehst in einem Raum. Hier scheint nichts besonders zu sein. " DATA "Sieht jedenfalls so aus, so wie ich das sehe." DATA "#R" DATA "Du bist im Zimmer des Witzerzählers. Man weiß nicht, wer er ist, " DATA "was er ißt, noch woher er kommt. Er war einfach da. Vermutlich " DATA "ist er ein Spießgeselle des AUTOR's. Außer dem Witzerzähler ist " DATA "niemand und nichts in diesem Raum." DATA "#R" DATA "Du bist in einem Biologie-Testlabor. Hier stehen allerlei " DATA "technische Apperaturen herum. Von diesen Dingen hast du " DATA "allerdings keine Ahnung, und so würde ich dir raten, nichts " DATA "anzufassen. Sonst sprengst du den ganzen Laden noch in die Luft." DATA "#R" DATA "Du bist in der Folterkammer. Allerlei Dinge für den Hausgebrauch " DATA "wie Peitschen, Nieten etc. (Der Fachmann wird wissen, was man " DATA "braucht) hängen an den Wänden. /Für den Normalen alles ziemlich " DATA "uninteressant. Das einzig Interessante für dich steht in der " DATA "Mitte des Raumes. Es handelt sich um einen Käfig." DATA "#R" DATA "Du bist im Schicksalsraum angekommen. Was für ein sinnreicher " DATA "Name. Außer der Tür, durch die du hereingekommen bist, gibt es " DATA "hier noch drei weitere Türen. Frag mich nicht, wo sie hinführen. " DATA "Es ist deine Entscheidung. Wähle die Richtige (Du merkst, es " DATA "geht auf den dramaturgischen Höhepunkt zu. Deshalb das " DATA "Geschwafel.)." DATA "#R" DATA "Du bist in einem Gang, der weiter nach vorn führt." DATA "#R" DATA "Du bist in einem Gang, der noch weiter nach vorn führt." DATA "#R" DATA "Du bist in einem Gang, der immer weiter nach vorn führt." DATA "#R" DATA "Du bist in den Räumen des bösartigsten, gefährlichsten, " DATA "hinterhältigsten Wesens gekommen, das man sich vorstellen kann. " DATA "Es ist ein Geschöpf aus deinen schlimmsten Alpträumen. Es ist " DATA "schlimmer als 'Tanz der Teufel 1-3' und 'Kettensägenmassaker' " DATA "zusammen. Es handelt sich um den AUTOR. Zum Glück für dich sitzt " DATA "er gerade nicht an seinem Schreibtisch." DATA "#R" DATA "Du stehst in einem Raum. Hier ist die unterste Ebene des " DATA "Gebäudes mit den Versorgungseinrichtungen. Hier laufen die Fäden " DATA "zusammen, hier ist nämlich der Hauptsicherungskasten. Mit ihm " DATA "hier kann man dem ganzen Haus den Saft abdrehen." DATA "#R" DATA "Du stehst in einem endlosen Gang. Du kannst im feuchten " DATA "Halbdunkel zwar nicht viel erkennen, aber soviel du erkennen " DATA "kannst, ist hier nichts besonders." DATA "#R" DATA "Hier ist ein Raum. Hier ist nichts weiter Wichtiges, bis auf die " DATA "zwei Maschinengewehrläufe und die Videokamera an der " DATA "gegenüberliegenden Wand." DATA "#R" DATA "Hier ist eine B., eine BO., eine BOM., eine BOMBE ! /Deshalb also auch " DATA "die Sicherungsmaßnahme im Vorraum. Wenn die jetzt hochgeht, oh " DATA "je. Dir bricht der Angstschweiß aus." DATA "#R" DATA "Du steckst im Lüftungssystem der unteren Ebene. Die Schächte " DATA "werden immer kleiner." DATA "#R" DATA "Du steckst im Lüftungssystem der unteren Ebene. Die Schächte " DATA "sind klein, sehr klein." DATA "#R" DATA "Du steckst im Lüftungssystem der unteren Ebene. Die Schächte " DATA "werden immer kleiner und du kriegst immer weniger Luft " DATA "(Hechel!). Merkwürdigerweise fehlen hier die Gitter." DATA "#R" DATA "Du steckst im Lüftungssystem der unteren Ebene. Die Schächte " DATA "werden immer noch kleiner, oder bilde ich mir das nur ein. " DATA "Merkwürdigerweise fehlen hier wieder die Gitter." DATA "#R" DATA "Du betrittst durch eine Tür das Dach des Gebäudes. Du nimmst " DATA "einen tiefen Zug von der herrlichen versmogten Luft, neue Kräfte " DATA "durchströmen deinen arg gebeutelten Agentenkörper. Du mußt mal " DATA "wieder Urlaub machen./Neben der guten Luft ist hier noch " DATA "ein Hubschrauberlandeplatz." DATA "#R" DATA "Du bist im Hubschrauber. Vor dir siehst du viel zu viele " DATA "Instrumente. Knöpfe, Schalter, Zeiger, rote, grüne, blaue. " DATA "Vor deinen Augen verschwimmt alles zu einer undefinierbaren " DATA "Farbmasse. Würdest du von deinem Gesichtsfeld eine Hardcopy machen, " DATA "käme ein Picasso heraus./" DATA "In diesem Moment erinnerst du dich an deine " DATA "verpatzte Hubschrauberprüfung. Was hat der Prüfer damals noch " DATA "gesagt : 'Eher lernt ein Beamter noch das Arbeiten, als Sie das " DATA "Fliegen.'" DATA "#R" DATA "Du bist im Schlafraum des AUTORS. Es ist spartanisch " DATA "eingerichtet. Eine nackte Birne baumelt von der Decke, deren " DATA "Schein das Zimmer in ein unwirkliches Licht taucht. Sonst sind " DATA "keine Möbelstücke zu sehen. Ja, du hast richtig gesehen, der AUTOR " DATA "schläft auf dem Fußboden. Es gruselt dich vor dieser Tristess." DATA "#R" DATA "Du bist in einem Flur. Hier ist sonst nichts weiter." DATA "#R" DATA "Du bist in der Feuerleitzentrale. Von dem Leitstand werden wohl " DATA "die Raketen auf dem Dach bedient. Du siehst, der AUTOR hat vorgesorgt. " DATA "Außer der Konsole sind in diesem Raum keine weiteren Gegenstände. " DATA "Es sind auch keine anderen Leute da. Welch ein Glücksfall" DATA "#R" DATA "Du bist im Terminalraum, dem Herz des Systems. Vor hier aus lenkt " DATA "der teuflische AUTOR seine dunklen Machenschaften. Wer weiß, " DATA "welche Sicherungen hier versteckt sind. Ich weiß es jedenfalls NICHT." DATA "Also sei auf der Hut, bedenke alles zweimal, bevor du etwas machst. " DATA "#R" ' link: DATA 2,0,0,0,0,0 DATA 0,1,0,0,15,3 DATA 4,0,0,0,2,0 DATA 8,3,5,6,0,0 DATA 0,0,0,4,0,0 DATA 0,0,4,0,0,0 DATA 0,0,8,0,0,0 DATA 0,4,9,7,0,0 DATA 0,0,10,8,0,12 DATA 0,0,0,9,0,0 DATA 0,12,0,0,0,0 DATA 11,13,14,0,9,33 DATA 12,0,0,0,0,0 DATA 0,0,0,12,0,0 DATA 0,0,0,0,0,2 DATA 0,0,0,15,0,0 DATA 22,21,19,20,0,0 DATA 23,22,19,18,0,0 DATA 18,22,20,19,0,0 DATA 17,19,16,19,0,0 DATA 19,17,18,20,0,0 DATA 21,17,21,20,0,0 DATA 0,0,20,24,0,0 DATA 25,0,23,26,0,0 DATA 0,24,0,0,0,0 DATA 0,0,24,27,0,0 DATA 0,0,26,0,0,0 DATA -1,27,29,-2,0,0 DATA 0,0,30,28,0,0 DATA 0,0,31,29,0,0 DATA 0,0,32,30,0,0 DATA 43,41,44,31,0,0 ' DATA 0,34,0,0,12,0 DATA 33,35,0,0,0,0 DATA 34,36,0,0,0,0 DATA 35,0,40,0,0,0 DATA -3,38,0,0,0,0 DATA 37,39,0,34,0,0 DATA 38,40,0,35,0,0 DATA 39,-3,0,36,0,0 ' DATA 32,0,0,0,42,0 DATA 0,0,0,0,0,41 DATA 0,32,0,0,0,0 DATA 45,0,46,32,0,0 DATA 0,44,0,0,0,0 DATA 0,0,0,44,0,0 ' PROCEDURE text_conv(a$,b$) PRINT "Konvertiere Text ...." OPEN "I",#1,a$ OPEN "O",#2,b$ DO LINE INPUT #1,a$ EXIT IF EOF(#1)=TRUE PRINT #2,"Data ";CHR$(34);a$;CHR$(34) LOOP CLOSE #1 CLOSE #2 RETURN ' ' ************ GDOS-Routinen **************** ' PROCEDURE gdos_init LOCAL t% IF GDOS? AND (NOT acc!) ' font_num%=@vst_load_fnt ' IF font_num%>0 ' open_top print_csf("Du hast ja GDOS installiert.") print_csf("Soviel Mut gehört belohnt.") print_csf("Du darfst einen anderen Zeichensatz auswählen.") print_cs(" ") print_csf("Jawoll, ist das nicht toll ! (Huch, ein Reim)") print_cs(" ") print_csf("Es wurden "+STR$(font_num%)+" Zeichensätze geladen.") print_cs(" ") FOR t%=1 TO font_num%+1 font%=VQT_NAME(t%,a$) print_cs(" -"+STR$(t%)+"- "+a$) NEXT t% ' print_cs(" ") REPEAT input_cs(2," Deine Wahl (Nein, nicht ankreuzen) : ",a$) t%=VAL(a$) UNTIL t%>=1 AND t%<=font_num%+1 ' font%=VQT_NAME(t%,a$) print_cs(" ") print_csf("Ist "+a$+" ein Proportionalfont(J/N)?") a$=UPPER$(CHR$(EVNT_KEYBD() AND &HFF)) IF a$="J" prop!=TRUE ELSE prop!=FALSE ENDIF ' IF fntgr%=13 AND t%>1 fntgr%=12 ENDIF ' set_face(font%) set_th(fntgr%) close_top ENDIF ENDIF RETURN ' PROCEDURE gdos_exit IF GDOS? AND (NOT acc!) feh%=@vst_unload_fnt ENDIF ~WIND_CLOSE(handle&) ~WIND_DELETE(handle&) RETURN ' FUNCTION open_vworkstation(handle&) LOCAL t% FOR t%=0 TO 9 INTIN(t%)=1 NEXT t% INTIN(10)=2 CONTRL(0)=100 CONTRL(1)=0 CONTRL(3)=11 CONTRL(6)=handle& VDISYS RETURN CONTRL(6) ENDFUNC ' PROCEDURE close_vworkstation(handle&) CONTRL(0)=101 CONTRL(1)=0 CONTRL(3)=0 CONTRL(6)=handle& VDISYS RETURN ' FUNCTION vst_load_fnt INTIN(0)=0 CONTRL(0)=119 CONTRL(1)=0 CONTRL(3)=1 CONTRL(6)=vdihandle& VDISYS RETURN INTOUT(0) ENDFUNC ' FUNCTION vst_unload_fnt INTIN(0)=0 CONTRL(0)=120 CONTRL(1)=0 CONTRL(3)=1 CONTRL(6)=vdihandle& VDISYS RETURN INTOUT(0) ENDFUNC ' PROCEDURE set_th(t%) INTIN(0)=t% CONTRL(0)=107 CONTRL(1)=0 CONTRL(3)=1 CONTRL(6)=vdihandle& VDISYS IF prop! sx%=PTSOUT(2)*4/5 sy%=PTSOUT(3) ENDIF ' RETURN ' PROCEDURE set_face(t%) INTIN(0)=t% CONTRL(0)=21 CONTRL(1)=0 CONTRL(3)=1 CONTRL(6)=vdihandle& VDISYS RETURN ' PROCEDURE clear_events LOCAL x%,y%,k%,i%,key%,ret%,t% REPEAT ret%=EVNT_MULTI(&X110011,2,1,1,0,0,0,0,0,0,0,0,0,0,0,256,x%,y%,k%,i%,key%,t%) UNTIL (ret% AND &X100000)=&X100000 mm&(3)=handle& m4&=handle& RETURN ' PROCEDURE ops CHDRIVE "g:" SAVE "g:\ops" RETURN ' CfR --> Codefreier Raum ' Das ist Zeile 5000 >>>>>>>>>>>> End Of The Line